У меня есть массив объектов, которые содержат другой массив с объектами. Вложенность в четыре уровня. Структура массива:
[
{
title: 'Title',
type: 'section',
links: [
{
label: 'Label',
id: 'id_1',
links: [
{
title: 'Title',
type: 'section',
links: [
{
label: 'Label',
id: 'id_2',
links: [
{
label: 'Label',
id: 'id_3',
links: [],
}
]
}
]
},
{
title: 'Other title',
type: 'section',
links: [
{
label: 'Label',
id: 'id_4',
links: [],
}
]
}
]
}
]
}
]
Я хочу иметь плоский массив с идентификаторами массивов ссылок, которые содержат ссылки (они являются родителями подменю). Таким образом, желаемый результат выглядит так: ["id_1", "id_2"]
Я попытался получить результат с помощью этой функции, взятой из MDN :
flatDeep(arr, d = 1) {
return d > 0
? arr.reduce((acc, val) =>
acc.concat(Array.isArray(val.links)
? this.flatDeep(val.links, d - 1)
: val.links), [])
: arr.slice();
}
Это дает мне пустое массив.