【发布时间】:2018-03-04 21:09:12
【问题描述】:
我有几个数组如下:
[ 'businessOpenAccount', 'accountSettings1.page.js' ]
[ 'businessOpenAccount', 'accountSettings2.page.js' ]
[ 'mainTest', 'test', 'test1.page.js' ]
[ 'mainTest', 'test', 'test2.page.js' ]
我的预期结果是以这种方式拥有一个对象:
{
businessOpenAccount: {
'accountSettings1.page.js': {},
'accountSettings2.page.js': {}
},
mainTest: {
test: {
'test1.page.js': {},
'test2.page.js': {}
}
}
}
所以实际上我想解析数组并构建一个嵌套对象以从它们返回,但一定要检查一个属性是否已经存在(因为从以前的数组定义)我不会覆盖它,而只是添加新的嵌套属性,尊重正确的嵌套顺序。
我尝试了几种使用reduce、reduceRight 和简单的forEach/for 循环的方法,但我仍然无法真正实现我想要的解决方案。
有什么建议吗?
这是迄今为止我最好的方法,但我覆盖了在多个数组上循环的属性(带有单个数组的示例):
const relevantFilePath = ['businessOpenAccount', 'accountSettings.page.js'];
let obj = {};
relevantFilePath.forEach((el, ind) => {
if (ind === 0) {
obj[el] = {};
previousEl = obj[el];
} else {
previousEl[el] = {};
previousEl = previousEl[el];
}
});
console.log(obj);
【问题讨论】:
标签: javascript node.js javascript-objects