У меня есть массив объектов с детьми. Цель состоит в том, чтобы удалить каждый элемент из массива элементов.
Можно ли обойтись без использования циклов forEach и map? Как использовать уменьшить в этом случае?
Проблема в том, что у некоторых массивов есть элементы на одном уровне, а у других есть дочерний массив с элементами внутри. Образец здесь:
{
"label": "child1",
"children": [
{
"label": "child2",
"items": [
"item1",
"item2"
]
},
{
"label": "child3",
"items": [
"item1",
"item2",
"item3"
]
}
]
}
В результате я хочу видеть мутированный массив объектов с массивами пустых элементов.
Вот объект для мутации:
[
{
"label": "parent",
"children": [
{
"label": "child1",
"children": [
{
"label": "child2",
"items": [
"item1",
"item2"
]
},
{
"label": "child3",
"items": [
"item1",
"item2",
"item3"
]
}
]
},
{
"label": "child4",
"items": []
},
{
"label": "child5",
"items": ["item1","item2"]
}
]
}
]
А вот мое неполное решение:
function flattenDeep(arr) {
return arr.reduce(
(acc, val) =>
Array.isArray(val)
? acc.concat(flattenDeep(val.children))
: acc.concat(val.children),
[]
);
}