我有点被暗示递归的东西困住了。我正在从 API 接收数据。它看起来像这样:const input = [ { id: 'a', level: 0 }, { id: 'b', level: 1 }, { id: 'c', level: 1 }, { id: 'd', level: 2 }, { id: 'e', level: 1 }, { id: 'f', level: 0 },];我需要类似的东西const out = [ { id: 'a', nodes: [ { id: 'b', nodes: [] }, { id: 'c', nodes: [ { id: 'd', nodes: [] }, ] }, { id: 'e', nodes: [] }, ] }, { id: 'f', nodes: [] },];您将如何以优雅的方式实现这一目标,例如out = f(input)?我觉得我们可以通过 reduce 来做一个递归的嵌套方法,但我没能做到:)
2 回答
森林海
TA贡献2011条经验 获得超2个赞
你可以试试,
function makeObject(id){
return { id: id, nodes:[] };
}
function addObjectToNodes(array, id, node){
array.map(a => {
if(a.id === id)
a.nodes.push(node);
});
}
const nodes = [];
nodes.push(makeObject('a'));
nodes.push(makeObject('f'));
addObjectToNodes(nodes, 'a', makeObject('b'));
addObjectToNodes(nodes, 'a', makeObject('c'));
addObjectToNodes(nodes, 'a', makeObject('d'));
addObjectToNodes(nodes, 'a', makeObject('e'));
console.log(nodes);
添加回答
举报
0/150
提交
取消