当前位置: 首页 > 知识库问答 >
问题:

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

罗昊明
2023-06-14
 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
    },

共有2个答案

田向荣
2023-06-14

一般来说这种问题都是深浅拷贝的问题,很多情况下 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,而是在返回的时候返回一个新的对象出来。

漆雕稳
2023-06-14
没找到问题,但是可以简化下代码
handleDesData(data) {
  return this.des.map(item => data[item.field] && ({...item, num: data[item.field].forecastDataDTOList[0].information['oneDay']})).filter(v => v);
}
 类似资料:
  • 我要做的是遍历Firebase数据库,看看是否有某个值,如果有,则什么也不做,如果没有,则向节点添加另一个值。 我的Firebase收藏是这样的: 同样,我不确定这是不是正确的代码,但它是类似的。我用这个答案作为帮助,但不能根据我的需要调整它:Firebase/Android如何获得子键和值? 还有一个问题,我得到的是,我的数据库是无限填一遍又一遍。

  • 我的数组正在加载,并且正在按计划(按照它们在文件中出现的顺序)将卡打印出来。当我尝试在单独的方法中循环遍历arraylist以检查数据是否存在时,它只打印最后一个对象而不是每个对象。有人能告诉我为什么吗? 加载法 和getAll()方法 运行时,它只打印出.txt文件中的最后一张牌“KS”(黑桃之王)。有人能告诉我为什么会这样吗? 谢谢 }

  • 问题内容: 我正在尝试找到一种易于理解的JavaScript数据结构调试方法。 我有一个相当大和复杂的数据结构存储在JS中,我需要编写一些代码来对其进行操作。为了弄清楚我在做什么和哪里出了问题,我真正需要的是能够完整地查看数据结构,并在我通过UI进行更改时对其进行更新。 除了找到一种将JavaScript数据结构转储到人类可读的字符串的好方法外,我还能处理所有这些事情。JSON可以,但是确实需要很

  • 问题内容: 我无法从fetchAll获取数据以选择性打印。 在普通的mysql中,我这样做: 在PDO中,我遇到了麻烦。我绑定了参数,然后将获取的数据保存到上述的$ rs中,目的是以相同的方式循环遍历它。 现在出现了麻烦部分。我如何在PDO上做些什么来获得与上述while循环匹配的东西?我知道我可以使用print_r()或dump_var,但这不是我想要的。我需要做以前可以使用普通mysql进行的

  • 问题内容: 如果您能帮助回答以下问题,我将不胜感激: 我已经使用Java以非常标准的方式创建了一个自定义链接列表。以下是我的课程: 我试图打印值我已经插入到列表如下 但是我从IDE获得的输出是 为什么打印出引用,而不打印出诸如bat,ant,rat …之类的字符串的实际值? 如果我想打印出实际值,那该怎么办? 非常感谢你 问题答案: 您的课程已经为您创建了! 将打印

  • 问题内容: 在Java中,您可以使用for循环遍历数组中的对象,如下所示: 您可以在JavaScript中做同样的事情吗? 问题答案: 您有几种选择: 1.顺序for循环: 优点 适用于各种环境 您可以使用和流控制语句 缺点 太冗长 势在必行 容易出现一对一的错误(有时也称为栅栏错误) 2. Array.prototype.forEach ES5规范引入了许多有益的数组方法,其中之一是,它为我们提