如何将子数组推入父子数组Angular 8



过滤数据后,我在findChildrens函数内得到以下响应。

现在我期望的是如果CCD_ 2的对象长度大于1,则它将把第二个对象的子对象合并到父对象子对象中。

对于ex-在下面的响应中,我得到了两个对象"Africa" and "Europe",所以我想将"Europe"的子对象合并到"Africa".的父对象中

有人能帮我按预期产量推吗。

findChildrens(){
this.newRegion = [
{
"name": "Africa",
"children": [
{
"name": "Test1",
"region": "1UL Africa"
},
{
"name": "Test2",
"region": "South Africa",
},
{
"name": "Test3",
"region": "New Test",
}
]
},
{
"name": "Europe",
"children": [
{
"name": "Test4",
"region": "1UL Africa"
},
{
"name": "Test5",
"region": "Test Europe"
}
]
}
];    
};

};

预期输出

this.newRegion = [
{
"name": "Africa",
"children": [
{
"name": "Test1",
"region": "1UL Africa"
},
{
"name": "Test2",
"region": "South Africa",
},
{
"name": "Test3",
"region": "New Test",
},
{
"name": "Test4",
"region": "1UL Africa"
},
{
"name": "Test5",
"region": "Test Europe"
}
]
}     
];    
};

你想做一些类似的事情吗

let newRegion = [
{
"name": "Africa",
"children": [
{
"name": "Test1",
"region": "1UL Africa"
},
{
"name": "Test2",
"region": "South Africa",
},
{
"name": "Test3",
"region": "New Test",
}
]
},
{
"name": "Europe",
"children": [
{
"name": "Test4",
"region": "1UL Africa"
},
{
"name": "Test5",
"region": "Test Europe"
}
]
}
];  

let result=newRegion[0];
if(newRegion.length>1){
result.children=result.children.concat(newRegion.slice(1).map(obj=>obj.children).flat())
}

console.log(result)

这个函数可能就是您想要的。但我必须警告您,您试图做的是不可扩展的,也不能代表代码最佳实践。您可能需要对这段代码进行一点编辑,使其能够工作,而不管您有多少个区域。

// It might be preferable to store this in a constant
const REGIONS = [
{
"name": "Africa",
"children": [
{
"name": "Test1",
"region": "1UL Africa"
},
{
"name": "Test2",
"region": "South Africa",
},
{
"name": "Test3",
"region": "New Test",
}
]
},
{
"name": "Europe",
"children": [
{
"name": "Test4",
"region": "1UL Africa"
},
{
"name": "Test5",
"region": "Test Europe"
}
]
}
];
findChildren() {
if (Object.keys(REGIONS).length > 1) {
const mergedChildren = REGIONS[0].children.concat(REGIONS[1].children);
return ({
...REGIONS[0],
children: mergedChildren
})
} else {
return REGIONS[0];
}
}

最新更新