为了账号安全,请及时绑定邮箱和手机立即绑定

将数组展开为没有父 ID 但具有级别的树

将数组展开为没有父 ID 但具有级别的树

隔江千里 2021-06-29 13:39:04
我有点被暗示递归的东西困住了。我正在从 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);


查看完整回答
反对 回复 2021-07-01
  • 2 回答
  • 0 关注
  • 261 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信