luni, martie 25, 2019

Get list of children from n-depth tree

const nodes = [
  {
    Children:[{
     Children:[{
      Children:[{
       Children:[],
        NodeId: 'N1111',
        NodeNane: 'Node1111'
      },
      {
        Children:[],
        NodeId: 'N1112',
        NodeNane: 'Node1112'
      }],
       NodeId: 'N111',
       NodeNane: 'Node111'
     },
     {
       Children:[],
       NodeId: 'N112',
       NodeNane: 'Node112'
     }],
     NodeId: 'N11',
     NodeNane: 'Node11'
   },
   {
     Children:[],
     NodeId: 'N12',
     NodeNane: 'Node12'
   }],
    NodeId: 'N1',
    NodeNane: 'Node1'
  },
  {
    Children:[],
    NodeId: 'N2',
    NodeNane: 'Node2'
  },
  {
    Children:[{
        Children:[{
         Children:[{
          Children:[],
          NodeId: 'N3111',
          NodeNane: 'Node3111'
         },
        {
          Children:[],
          NodeId: 'N3112',
          NodeNane: 'Node3112'
        }],
         NodeId: 'N311',
         NodeNane: 'Node311'
        },
        {
         Children:[],
         NodeId: 'N312',
         NodeNane: 'Node312'
       }],
        NodeId: 'N31',
        NodeNane: 'Node31'
      },
      {
        Children:[],
        NodeId: 'N32',
        NodeNane: 'Node32'
      }],
    NodeId: 'N3',
    NodeNane: 'Node2'
  }
]
const getNodes = ar => {
  const node=a=>a.Children.length==0?{NodeId: a.NodeId, NodeName: a.NodeNane}:getNodes(a.Children)
  return [].concat(...ar.map(node))
}

getNodes(nodes)


ramda link

Membri

Comentarii