为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只名叫tom的猫 2019-02-25 17:19:57
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}每次传入的参数对象就是这样的。
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

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)

}


查看完整回答
反对 回复 2019-03-03
  • 1 回答
  • 0 关注
  • 329 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信