我想为父母、它的孩子、它的孙子、它的曾孙等等获得一组平面结构的对象

问题描述 投票:0回答:1

我有一个如下所示的对象数组 [{投资组合:“AMBAL”, 1级, 直接父级:""}, {投资组合:“AMBAL-PI”, 等级:2, 直接父级:"AMBAL"}, {投资组合:“AMBAL-FI”, 等级:2, 直接父级:“AMBAL”},

{投资组合:“2213AMBAL”, 等级:3, 直接父级:"AMBAL-FI"}, {投资组合:“2132AMBAL”, 等级:3, 直接父级:“AMBAL-PI”}....]

我刚刚给出了第 3 级的示例,但它可能还有更多......

预期o/p

[{投资组合:“AMBAL”, 1级, 直接父级:""},

{投资组合:“AMBAL-FI”, 等级:2, 直接父级:“AMBAL”},

{投资组合:“2213AMBAL”, 等级:3, 直接父级:“AMBAL-FI”},

{投资组合:“AMBAL-PI”, 等级:2, 直接父级:“AMBAL”},

{投资组合:“2132AMBAL”, 等级:3, 直接父级:“AMBAL-PI”}

] 仅使用 javascript 返回上述对象数组

javascript
1个回答
0
投票

您可以收集每个级别并获得平面阵列。

const
    data = [{ Portfolio: "AMBAL", Level: 1, "Immediate Parent": "" }, { Portfolio: "AMBAL-PI", Level: 2, "Immediate Parent": "AMBAL" }, { Portfolio: "AMBAL-FI", Level: 2, "Immediate Parent": "AMBAL" }, { Portfolio: "2213AMBAL", Level: 3, "Immediate Parent": "AMBAL-FI" }, { Portfolio: "2132AMBAL", Level: 3, "Immediate Parent": "AMBAL-PI" }],
    result = data
        .reduce((r, o) => {
            r[o["Immediate Parent"]].push([o, r[o.Portfolio] = []]);
            return r;
        }, { '': [] })
        ['']
        .flat(Infinity);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

© www.soinside.com 2019 - 2024. All rights reserved.