问题描述
[
{
"id": "root_01","parents": [
{
"id": "parent_1","childrens": [
{
"id": "child_01","name": "ABC","group": "group_a"
},{
"id": "child_02","name": "BBC","group": "group_b"
}
]
},{
"id": "parent_2","childrens": [
{
"id": "child_03","name": "CCD",{
"id": "child_04","name": "EEF","group": "group_c"
}
]
}
]
},{} // same as prevIoUs
]
并且我正在尝试摆脱所有父数据并仅捕获并合并这样的子项:
[
{
"id": "child_01","group": "group_a"
},{
"id": "child_02","group": "group_b"
},{
"id": "child_03",{
"id": "child_04","group": "group_c"
}
]
但是在阅读了 normalizr
文档后,我有点困惑,因为我找不到这种示例,所以有人可以建议我是否可以使用 normalizr 或任何更好的主意来制作?
谢谢
解决方法
Recusrion
正是您所需要的:
const arr = [ { "id": "root_01","parents": [ { "id": "parent_1","childrens": [ { "id": "child_01","name": "ABC","group": "group_a" },{ "id": "child_02","name": "BBC","group": "group_b" } ] },{ "id": "parent_2","childrens": [ { "id": "child_03","name": "CCD",{ "id": "child_04","name": "EEF","group": "group_c" } ] } ] }];
const flatten = arr => arr.flatMap(o=>o.parents ? flatten(o.parents) : o.childrens ? flatten(o.childrens) : o);
console.log(flatten(arr));