我在使用reduce函数时有点困惑我有一个数组
let aa = [1,2,3,4,5,6]
我需要的输出是:
[{id:1,children:
[{id:2,children:
[{id:3,children:
[{id:4,children:
[{id:5,children:
[{id:6,children:[{}]}]
}]
}]
}]
}]
}]
我写了一个函数
let aa = [1,2,3,4,5,6]
let cc = aa.reduce((acc, val) => {
let obj = {
id: val,
children: []
}
acc.push(obj);
console.log(acc[0].children)
acc = acc[0].children
return acc
}, [])
console.log(cc);
执行后,我得到的是空数组,但是在查看第7行控制台时,iam会得到一些类似的信息
请有人帮助我了解我犯了什么错误。
我们可以使用javascript中的Map()来制作这棵树吗
您需要在调用之前保存对初始外部数组的引用.reduce
。然后,在调用.reduce
并传入初始值之后,它将构造递归结构,然后您可以返回初始值以返回整个结构:
const aa = [1, 2, 3, 4, 5, 6]
const result = [];
aa.reduce((acc, val) => {
acc[0] = {
id: val,
children: [{}]
};
return acc[0].children;
}, result);
console.log(result);
不将结果保存到外部数组的另一种方法是使用reduceRight
从内部构造它:
const aa = [1, 2, 3, 4, 5, 6]
const result = aa.reduceRight((children, val) => ([{
id: val,
children
}]), [{}]);
console.log(result);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句