我有一个具有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基金”-从内到外,但我要从外到内过滤(“活动”),然后转到下一级)。
示例代码将不胜感激。谢谢!