为何在json数组追加元素一直undefine?
发布于 8 年前 作者 junguo 4385 次浏览 来自 官方Issues

想按zhenrong这个[{}]json数组中的数据去另一个表里查数据,然后把结果添加到数组中每个json新追加属性,结果最后结果console中是正常的,但是输出追加的元素却是undefine,在最底层循环里有大概率可以输出,但是跳到高一级循环就全是undefine了。求大佬指导。

我试过把元素名称改为英文也是一样的结果

代码如下,调试器截图

 setColor: function(zhenrong) {
    for (let i = 0; i < zhenrong.length; i++) {
      for (let j = 1; j < 7; j++) {
        db.collection("kuaileTD_hero").where({
          '名字': zhenrong[i]['英雄' + j]
        }).get({
          success(res) {
            console.log("当前查的是第",i,"阵容第",j,"英雄",res)
            zhenrong[i]['颜色' + j] = res.data[0]['稀有度']
            console.log("in_for_j", zhenrong[0]['颜色1'])
          // var new_zhenrong = []; 
          // zhenrong.map(item => { item[color+j] = res.data[0]['稀有度']; new_zhenrong.push(item); })
          }
        })
      }
      // console.log(zhenrong)
      console.log("in_for_i", zhenrong[0]['颜色1'])
    }
    console.log(zhenrong)
    console.log(zhenrong[0])
    console.log("setcolor_over",zhenrong[0]['颜色1'])
    console.log("setcolor_over", zhenrong[0].yanse)
    return zhenrong
  }

2 回复

不就是异步问题吗 , js是单线程的

没仔细看代码,大概知道这个是异步问题。

db.collection("kuaileTD_hero").where({
          '名字': zhenrong[i]['英雄' + j]
        }).get({
          success(res) {
用await一下吧。
回到顶部