如何从最高层次结构降序遍历嵌套数组

时间:2019-07-05 15:36:16

标签: javascript reactjs

我有一个具有3个层次结构的嵌套数组,我想根据位置从最高层次结构到最低层次结构以降序排列。原始数组如下:

 [{'holder': 'Passive', 'Position': 500.0, 
      'Node': [{'holder': 'TD Inc.', 'Position': 100.0, 
                  'Node': [{'holder': 'TD ETF', 'Position': 20}, 
                           {'holder': 'TD Fund', 'Position': 80}]}, 
               {'holder": 'CIBC', 'Position':400,
                  'Node':[{'holder':'CIBC Fund','Position': 400}]}]},
 {'holder': 'Active', 'Position': 550.0, 
      'Node': [{'holder': '18 Asset', 'Position': 550, 
                 'Node': [{'holder': '18 Inc.', 'Position': 250, 
                          {'holder': 'Lysander-18', 'Position': 300}]}]}];

,结果应为:

[{'0': 'Active', '1':'', '2':'','3': 550.0},
{'0': '', '1':'18 Asset', '2':'','3': 550.0},
{'0': '', '1':'', '2':'Lysander-18','3': 300.0},
{'0': '', '1':'', '2':'18 Inc.','3': 250.0},
{'0': 'Passive', '1':'', '2':'','3': 500.0},
{'0': '', '1':'CIBC', '2':'','3': 400.0},
{'0': '', '1':'', '2':'CIBC Fund','3': 400.0},
{'0': '', '1':'TD Inc.', 'Owner_name':'','3': 100.0},
{'0': '', '1':'', '2':'TD Fund','3': 80.0},
{'0': '', '1':'', '2':'TD ETF','3': 20.0}]

这是我现在拥有的代码:

var result = [];
function flatten(items,layer) {
    if (items) {
      items.reverse().forEach(function(a) {
        if (layer == 0) {
            result.push({
                0: a.holder,
                1: '',
                2: '',
                3: a.Position
            });
            flatten(a.Node, layer+1);
        } else if (layer == 1) {
            result.push({
                0: '',
                1: a.holder,
                2: '',
                3: a.Position
            });
            flatten(a.Node, layer+1);
        } else {
            result.push({
                0: '',
                1: '',
                2: a.holder,
                3: a.Position
            });
        }
      });
    }
    return result;
  }

这是我的代码的结果:

{'0': 'Passive', '1':'', '2':'','3': 500.0},
{'0': '', '1':'CIBC', '2':'','3': 400.0},
{'0': '', '1':'', '2':'CIBC Fund','3': 400.0},
{'0': '', '1':'TD Inc.', 'Owner_name':'','3': 100.0},
{'0': '', '1':'', '2':'TD Fund','3': 80.0},
{'0': '', '1':'', '2':'TD ETF','3': 20.0},
[{'0': 'Active', '1':'', '2':'','3': 550.0},
{'0': '', '1':'18 Asset', '2':'','3': 550.0},
{'0': '', '1':'', '2':'Lysander-18','3': 300.0},
{'0': '', '1':'', '2':'18 Inc.','3': 250.0}]

它要做的是找到最低层级中的最大数字(在这种情况下为“ CIBC基金”-从内到外,但我要从外到内过滤(“活动”),然后转到下一级)。

示例代码将不胜感激。谢谢!

0 个答案:

没有答案