js map遍历数据进去打印都能看到数据,return的时候没有?

作者站长头像
站长
· 阅读数 8
 handleDesData(data) {
      console.log("进来", data)
      let newArry = [];
      this.des.map(item => {
        for (const key in data) {
          if (item.field == key) {
            item.num = data[key].forecastDataDTOList[0].information['oneDay'];
            console.log(data[key].forecastDataDTOList[0].information['oneDay'])
            newArry.push(item)
          }
        }
      });
      console.log("处理", newArry)
      return newArry
    },

调用的时候

  //处理数据
          this.list.map(item => {
            if (item.data.length) {
              item.data.map(i => {
                this.handleData(i.ybData);
                i.lineData = this.lineData;
                i.des = this.handleDesData(i.ybData)
              })
            }

          })

-- 数据只存在最后几个对象里面 现在遍历出来的 都是 --

这样写就可以了

 handleDesData(data) {
      console.log("进来", data)
      let newArry = [];
      let newOption = JSON.parse(JSON.stringify(this.des));
      newOption.map(item => {
        for (const key in data) {
          if (item.field == key) {
            item.num = data[key].forecastDataDTOList[0].information['oneDay'];
            console.log(data[key].forecastDataDTOList[0].information['oneDay'])
            newArry.push(item)
          }
        }
      });
      console.log("处理", newArry)
      return newArry
    },
回复
1个回答
avatar
test
2024-07-02

一般来说这种问题都是深浅拷贝的问题,很多情况下 xxxx.push(item) 的时候都会有其它地方复用,所以经常会出现这样的问题。

一般修改思路这样的:

handleDesData(data) {
  const keyList = Object.keys(data)
  const newArray = this.des
      .filter(item => keyList.includes(item.field))
      .map(item => ({ ...item, num: data[item.field].forecastDataDTOList[0].information['oneDay']}))
  return newArray
}

主要就是不要直接去修改 item,而是在返回的时候返回一个新的对象出来。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容