如何基于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,{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,[]
);
console.log(output);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...