是否有一种方法来减少嵌套json只提取某些值?



我有以下嵌套的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) );

最新更新