Javascript 是否将变量添加到数组对象?
昨天我收到了一些帮助,通过我的var arr循环并在系统中搜索.png文件。使用以下代码:Javascript 是否将变量添加到数组对象?,javascript,node.js,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 fileP
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 fileexist中的数据写入mongodb。因此,我认为最好的解决方案是将fileexist中的数据添加到var arr中
在阅读了一些谷歌搜索之后,我尝试了一些类似的东西
arr["Logopath"] = filesExist;
但这是行不通的
我也试过这个
arr.unshift({
Logopath: filesExist
});
这是半工作状态,但会增加数组的大小,并向其中输入大量未定义的值
如何将var fileexist info中的数据添加到arr[“Logopath”] 只需执行
imgObj.Logopath='…'
你想要的不是arr[“Logopath”]
,而是arr[i][“Logopath”]
每个i
。而imgObj
是arr[0]
然后arr[1]
等等
在这种情况下,
forEach
比map
更合适。我将在这里回答我自己的问题,但我要感谢Ben West为我指明了正确的方向:
for (var i = 0; i < filesExist.length; i++) {
arr[i]["Logopath"] = filesExist[i]
}
for(var i=0;i
适用于我…您似乎将数组与对象混淆了。它们不是一回事。第一次尝试将“arr”视为对象。第二次尝试将其视为包含对象的数组。(据我所知,FileExist首先是从arr读取其信息,因此不清楚将该数据添加回arr的目的是什么?)当您
console.log(FileExist)
时,您看到了什么?您应该看到一个对象数组,每个对象都有一个设置为文件路径的属性Logopath
。为什么要将此添加到arr
?你打算如何处理这些数据?这看起来像是一个…嗨,在控制台中,它返回文件路径,当我执行console.log fileexist.length时,它返回大约300@Daniel Beck是的,你是对的,我把它们弄糊涂了。我确实希望数据从fileexist进入arr[“Logopath”]=fileexist;@Mike McCaughan嗨这不是xy的问题。我的所有数据都存储在arr var中,如果文件路径存储在同一个var中,那就太好了。您好,谢谢您的回复。是的,我希望logopath中的每一行都存储在我的arr中。您介意显示一个示例吗,因为我不太确定我将如何处理这个问题