【发布时间】:2020-07-12 07:43:29
【问题描述】:
我有一个对象数组,其中包含另一个对象数组。嵌套有四层深。 数组的结构是:
[
{
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(它们是子菜单的父级)。
所以想要的结果是这样的:
["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();
}
这给了我一个空数组。
【问题讨论】:
-
所以,从给定的对象数组中,您只需要像
["id_1", "id_2"]这样的数组?
标签: javascript arrays ecmascript-6