Tengo la siguiente estructura json anidada:
{ element: "a", items: ["l1", "l2"], children: [{ element: "b", children: [{ element: "c", items: ["l3"] }, { element: "b", child: { element: "c", items: ["l4"] } }Básicamente:
Me gustaría procesar este json para obtener una matriz plana que contenga todos los elementos:
const finalArray = parse(json); //returns ["l1","l2","l3","l4"]¿Hay alguna forma elegante de lograr esto con funciones de mapeo/filtro?
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) );