前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序for循环里条件判断

微信小程序for循环里条件判断

原创
作者头像
疯狂的小程序
发布2018-01-22 15:55:28
3.6K0
发布2018-01-22 15:55:28
举报

前文:

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

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

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

错误示例:

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

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

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

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

原来的思路是:

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档