制作可变键和深度的嵌套对象的最佳方法是什么?
例如,我想使用数组["one", "two", "three"]
并创建以下对象:
{
one: {
key: value,
two: {
key: value2,
three: {
key: value3
}
}
}
}
我当时以为可以使用for循环,但是我不确定如何跟踪每个级别。
答案 0 :(得分:1)
reduce方法为每个的值执行提供的函数。 数组(从左到右)。该函数的返回值为 存储在累加器(myObject)中。
var aArray = ['one', 'two', 'three'];
var myObject = {}, i = "";
aArray.reduce(function(oObject, sString) {
oObject[sString] = { key: "value" + i };
i++;
return oObject[sString];
}, myObject);
console.log(myObject);
答案 1 :(得分:1)
您可以使用reduceRight
在每个循环中添加一层嵌套。
let arr = ["one", "two", "three"],
initialValue = { key: arr.length - 1 }
const output = arr.reduceRight((acc, k, i) =>
({
[k]: Object.assign({ key: i }, acc)
})
, initialValue)
console.log(output)