将var添加到数组对象?

时间:2018-03-25 15:19:11

标签: javascript node.js

昨天我收到了一些循环浏览我的var arr并在系统中搜索.png文件的帮助。使用以下代码:

 const fs = require('fs');
 const path = require('path');
 const imageDir = '/var/scraper/public/images/flags/';

 var filesExist = arr.map((imgObj) => {
   const imgfile = imgObj.country;
   let filePath = path.join(imageDir, imgfile + ".png");
   //console.log('Checking existance of file: ', filePath);
   return { Logopath: fs.existsSync(filePath) ? filePath: path.join(imageDir, "noimage.png")};
});

console.log(filesExist);

哪个工作正常,但是在我的server.js文件的末尾(这里没有包含)我将var arr中的所有数据写入mongodb以供以后访问。

我还需要将存储在新var filesExist中的数据写入mongodb。所以我认为最好的解决方案是将filesExist中的数据添加到var arr中。

在阅读了一些谷歌搜索后,我尝试了一下这个

arr["Logopath"] = filesExist;   

但这不起作用

我也试过这个

arr.unshift({
    Logopath: filesExist
});

哪个是半工作但这增加了数组的大小并输入了大量未定义的值。

如何将var filesExist信息中的数据添加到arr [“Logopath”]?

2 个答案:

答案 0 :(得分:2)

只需imgObj.Logopath = '...'

它不是arr["Logopath"]你想要的,而arr[i]["Logopath"]代表iimgObjarr[0],然后是arr[1],依此类推。

在这种情况下,

forEach会比map更合适。

答案 1 :(得分:0)

我会在这里回答我自己的问题,但我要感谢 Ben West 指出我正确的方向:

for (var i = 0; i < filesExist.length; i++) {
    arr[i]["Logopath"] = filesExist[i]
}

适合我...