Javascript 尝试在对象数组中循环以使用对象中的数据填充数组

Javascript 尝试在对象数组中循环以使用对象中的数据填充数组,javascript,loops,object,Javascript,Loops,Object,我正在编写一个节点脚本来收集多个硬盘上的一组文件名和位置。问题是,我试图通过一个循环拨入对象的“dirs”数组,而不是必须为dirs[I].tv,dirs[I].movies,dirs[I].images等进行编码。对于数组中的每个对象,我将有一个循环通过的[“tv”,“movies”,“images”,etc“]数组。我最终得到了类似于“dirs[I].n”和“n”的东西作为一个由循环定义的变量,这是一个不起作用的问题。由于对象中未定义“n”,脚本将返回一个错误 下面是我正在使用的代码 var

我正在编写一个节点脚本来收集多个硬盘上的一组文件名和位置。问题是,我试图通过一个循环拨入对象的“dirs”数组,而不是必须为dirs[I].tv,dirs[I].movies,dirs[I].images等进行编码。对于数组中的每个对象,我将有一个循环通过的[“tv”,“movies”,“images”,etc“]数组。我最终得到了类似于“dirs[I].n”和“n”的东西作为一个由循环定义的变量,这是一个不起作用的问题。由于对象中未定义“n”,脚本将返回一个错误

下面是我正在使用的代码

var dirs = [
    {
        name: "C",
        loc: "C:/",
        tv: undefined,
        movies: undefined,
        images: "Users/'Master William'/Pictures/",
        music: undefined,
        torrents: undefined,
        porn: undefined
    },
    {
        name: "D",
        loc: "D:/",
        tv: "Video/TV/",
        movies: "Video/Movies/",
        images: "images/pics/",
        music: "Music/",
        torrents: "Torrents/",
        porn: undefined
    },
    {
        name: "I",
        loc: "I:/",
        tv: "Users/heliu/Videos/TV/",
        movies: "Users/heliu/Videos/Movies/",
        images: "Users/heliu/Desktop/Will/Pics/",
        music: "Users/heliu/Music/",
        torrents: undefined,
        porn: "Users/heliu/Videos/Pr0n/"
    },
    {
        name: "J",
        loc: "J:/",
        tv: "Video/TV/",
        movies: "Video/Movies/",
        images: "Pics",
        music: "Tunes/",
        torrents: undefined,
        porn: "Pornography/"
    }
]

const fs = require("fs");
var tvArr = [];
var moviesArr = [];
var imagesArr = [];
var musicArr = [];
var torrentsArr = [];
var pornArr = [];
var mediaArr = ["tv", "movies", "images", "music", "torrents", "porn"];
var arrArr = [tvArr, moviesArr, imagesArr, musicArr, torrentsArr, pornArr];


for( var i = 0; i < dirs.length; i++){
    let o = dirs[i].loc;
    for( var j = 0; j < mediaArr.length; j++){
        let n = mediaArr[j];
        if(dirs[i].n !== undefined){
            let x = dirs[i].loc+dirs[i].n;
            fs.readdirSync(x).forEach(file => {
                arrArr[j].push(file);
            })
        }
    }
}
var-dirs=[
{
名称:“C”,
loc:“C:/”,
电视:未定义,
电影:未定义,
图片:“用户/‘威廉大师’/图片/”,
音乐:未定义,
激流:未定义,
色情:未定义
},
{
名称:“D”,
loc:“D:/”,
电视:“视频/电视/”,
电影:“视频/电影/”,
图像:“图像/图片/”,
音乐:“音乐/”,
激流:“激流/”,
色情:未定义
},
{
姓名:“我”,
loc:“I:/”,
电视:“用户/heliu/Videos/tv/”,
电影:“用户/heliu/Videos/movies/”,
图片:“Users/heliu/Desktop/Will/Pics/”,
音乐:“Users/heliu/music/”,
激流:未定义,
色情:“用户/heliu/Videos/Pr0n/”
},
{
姓名:“J”,
loc:“J:/”,
电视:“视频/电视/”,
电影:“视频/电影/”,
图片:“图片”,
音乐:“曲调/”,
激流:未定义,
色情:“色情/”
}
]
常数fs=要求(“fs”);
var-tvArr=[];
var moviesArr=[];
var成像仪=[];
var musicArr=[];
var torrentsArr=[];
var-arr=[];
var mediaArr=[“电视”、“电影”、“图像”、“音乐”、“洪流”、“色情”];
var arrArr=[tvArr、moviesArr、imagesArr、musicArr、torrentsArr、PONNARR];
对于(变量i=0;i{
arrArr[j].推送(文件);
})
}
}
}

我将媒体阵列更改为

var mediaArr=[dirs[i].电视,dirs[i].电影,dirs[i].图像等]


并在循环中确定其范围,以便识别“i”

问题到底是什么?试图找到更好的方法吗?
n
是一个字符串,对吗?然后尝试使用
dirs[i].n来访问该属性?我想你需要做
dirs[I][n]