我有以下嵌套的json结构:
{
element: "a",
items: ["l1", "l2"],
children: [{
element: "b",
children: [{
element: "c",
items: ["l3"]
}, {
element: "b",
child: {
element: "c",
items: ["l4"]
}
}
基本上:
- 一个"element"包含一个名称、一组项和一组子元素,构成一个"元素"。自己
- 物品列表可能缺失
我想处理这个json来获得一个包含所有项目的平面数组:
const finalArray = parse(json); //returns ["l1","l2","l3","l4"]
是否有任何优雅的方法来实现这与映射/过滤器功能?
const getItems = (acc = [], { items = [], child = {}, children = [] }) =>
[
...acc,
...items,
...(child?.items || []),
...(children.length ? children.reduce(getItems, acc) : [])
];
const data = {
element:"a",
items: ["l1","l2"],
children: [
{
element: "b",
children: [
{ element: "c", items: ["l3"] },
{ element: "b", child: { element: "c", items: ["l4"] } }
]
}
]
}
console.log( getItems([], data) );