在for循环javascript中将数组插入到空数组中

insert array to empty array in for-loop javascript

本文关键字:数组 插入 for javascript 循环      更新时间:2023-09-26

我有一个空数组&想要在for循环中插入从mongodb查询返回的所有数组,但数据没有被推送到arr中

  var arr = [];
   categoryObj.find({is_deleted:false,ancestors: []}, function(err, data) {
       if(data) {
           for (i=0;i< data.length;i++) {
               categoryObj.find({is_deleted:false}, function(err, result) {
                  if (result) {
                      arr[i].push(result);
                  }
              })
          }
       }
 console.log(arr);
}

任何帮助,不胜感激。

如果result不为空,那么一个简单的arr.push(result)应该执行该操作(不带[i])。否则,您应该通过在控制台中输出result来检查它是否没有返回任何内容。

 var arr = [];
   for (i=0;i< data.length;i++) {
        categoryObj.find({is_deleted:false}, function(err, result) {
           if (result) {
                arr.push(result);
           }
        })
   }
 console.log(arr);

执行arr.push而不是arr[i].push

如果您的数据是一个对象,则必须使用以下代码:

for(var key in data){
    var value = data[key];
    /* do something with your data, e.g. arr.push(value); */
}

如果你的数据是一个数组,你可以使用你的代码,但更改这行

arr[i].push(result);

arr.push(result);
try {
    const data = await categoryObj.find({is_deleted:false,ancestors: []});
    const arr = await Promise.all(data.map(async (item) => {
        const children = await categoryObj.find({is_deleted:false, ancestors: {
            $in: [item._id]
        }});
        return children;
    });
    console.log(arr);
} catch (e) {
  console.log(e);
}