欢迎光临,了解微信小程序开发,就上易用通!

微信小程序之条件判断

发布:2018-05-04 15:48浏览: 来源:网络 作者:cola

前文:

今天踩了一下午的坑,但是确实很简单的问题。

我说一下需求:扫描商品的二维码,从而判断,同一个二维码不可多次扫描;

微信小程序之条件判断(图1)

点击扫一扫 会在灰色区域展示 扫描的商品信息,比如商品名称,商品码等,但是我们的需求是一物一码,即使是同一个商品也是不同的商品码。

错误示例:

最开始我的想法是做判断,因为我会在相对应的js文件中定义一个 productList:[ ],数组来存放数据,

Pages({ 
productList: [用来存放,通过后台接口得到的相关商品的数据信息]

}) 
由于我们是一物一码,那唯一的判断条件就是商品码了

 

				
  1. wzy.post("/wx/open/getProdcutNameByCode", product, true)
  2. .then((res) => {
  3.  
  4. let products={
  5. name: res.data.data,
  6. code:product.code,
  7. }
  8.  
  9. let productLength = this.data.productIist.length;
  10.  
  11.  
  12. //如果列表没有直接推,如果有循环,如果
  13. if (productLength==0){
  14. this.data.productIist.push(products);
  15. this.setData({
  16. productIist: this.data.productIist
  17. })
  18. }else{
  19.  
  20. for (let i = 0; i < productLength;i++){
  21. if (products.code == this.data.productIist[i].code){
  22. global.jv.showPop('提示','同一商品不可重复扫描')
  23. return
  24. }
  25. }
  26. this.data.productIist.push(products);
  27. this.setData({
  28. productIist: this.data.productIist
  29. })
  30. }
  31. }).catch((res) => {
  32. console.log(res)
  33. wzy.showPop('提示', '当前网络繁忙,请重新扫描')
  34. })
  35. },

原来的思路是:

 

				
  1. .then((res) => {
  2.  
  3. let products={
  4. name: res.data.data,
  5. code:product.code,
  6. }
  7.  
  8. let productLength = this.data.productIist.length;
  9.  
  10.  
  11. //如果列表没有直接推,如果有循环,如果
  12. if (productLength==0){
  13. this.data.productIist.push(products);
  14. this.setData({
  15. productIist: this.data.productIist
  16. })
  17. }else{
  18. // 原来思路:把数组中的每一项code取出来与扫码得到的code进行对比,如果不相等就push到数组中 从而在页面循环,但是发现
  19. // 当数组的length>1的情况下,会发生即使你扫码得到的code不与原数组相同但是会重复多次,次数由productIist.length决定
  20.  
  21.             productIist.forEach(item=>{
  22. if(item.code !==this.data.productIist.code ) {
  23. this.data.productIist.push(products);
  24. this.setData({
  25. productIist: this.data.productIist
  26. })
  27. }
  28.  
  29. })
  30. }).catch((res) => {
  31. console.log(res)
  32. wzy.showPop('提示', '当前网络繁忙,请重新扫描')
  33. })
  34. },

所以 在上面的正确的示例中 使用for循环 并把判断也写进for循环中 如果数组中的code与扫描的code相等 就会弹出提示框,并且不会执行下面代码,但是当条件不相符的时候,便可以愉快的执行下面的代码了。






免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。