如何在javascript中根据循环中的交互次数创建级联属性



我有:

var dataCategories = [];
for(var i = 0, len = 3; i < len; i++) {
dataCategories.push({name: i, categories: [] })
}
console.log(dataCategories) 
/* Result:
[{name: 0, categories: [] }, {name: 1, categories: [] }, {name: 2, categories: [] }]
*/ 

但我需要一个像下面一样的结果

[{name: 0, 
categories: [{
name: 1, 
categories: [{
name: 2, 
categories: [] 
}]
}] 
}]

如何获得级联结果?

考虑使用reduceRight,在0到2:的数组上迭代

const arr = [0, 1, 2];
const output = arr.reduceRight(
(categories, name) => [{ name, categories }],
[]
);
console.log(output);

或者,对于任意数字:

const length = 3;
const arr = Array.from({ length }, (_, i) => i);
const output = arr.reduceRight(
(categories, name) => [{ name, categories }],
[]
);
console.log(output);

最新更新