JS 循环-陷入逻辑死区,求解答。

dataHandler(opt){

      const miniCartListArr = [...this.miniCartListArr]

      let tempArr = []

      let data = {};

      if (miniCartListArr.length > 0) {

        miniCartListArr.forEach((item, idx) => {

          let $item = item;

          if ($item.skuId == opt.skuId) {

            data[opt.skuId] = true

            tempArr.push(opt)

          } else {

            tempArr.push($item)

          }

        })

      } else {

        opt.countNum = 1

        tempArr.push(opt)

      }

      this.setMiniCartListArr(tempArr)

    }

我是取到miniCartListArr ,如果他的个数大于0 就遍历miniCartListArr ,小于等于0 就直接把传递进来的opt推送到临时空数组里。回到遍历里面,我的目的是对比传递进来的对象ID 和遍历的当前ID 做比较,如果相同就push 传递进来的,不相同就push 当前遍历的对象,最后在把 新的tempArr(和miniCartListArr的区别就是多一个对象或者少一个对象,也有可能是改变其中一个对象) 存储起来。


但是现在,发现第一次是push 进去了,后面就没有PUSH进去,函数是出发了的,但是有问题。


写到这个地方遇到个小问题, 绕进去出不来了。求大佬思路。


传入参数格式

{

    skuId: 201108293321,

    price: 2.89,

    countNum: 1

}

每次传入的参数对象就是这样的。


一只名叫tom的猫
浏览 330回答 1
1回答

撒科打诨

dataHandler(opt){  const miniCartListArr = [...this.miniCartListArr]  let tempArr = []  let data = {};  if (miniCartListArr.length > 0) {    miniCartListArr.forEach((item, idx) => {      let $item = item;      if ($item.skuId == opt.skuId) { // 当opt在mincarListArr中时,使用opt替换        data[opt.skuId] = true        tempArr.push(opt)      } else {        tempArr.push($item)      }    })    // 当opt不在mincarListArr中时,把opt添加在tmpArr的最后    if (!data[opt.skuId]) {      opt.countNum = 1      tempArr.push(opt)    }  } else {    opt.countNum = 1    tempArr.push(opt)  }  this.setMiniCartListArr(tempArr)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript