我有一个数组:
const arr = [
{
name: "name 1",
dontShow: true,
children: [
{
name: "name 2",
key4: 4,
dontShow: false,
children: [],
},
],
},
{
name: "name 3",
dontShow: false,
children: [
{
name: "name 4",
dontShow: true,
children: [
{
name: "name 5",
dontShow: false,
children: null,
},
],
},
],
},
];
除了具有属性dontShow: true
的对象之外,每个对象都需要一个名称数组
因此,从该示例中,我希望得到这样的数组:
["name2", "name3", "name5"]
基本上,我需要从树状结构中获得一个平面数组,lodash /下划线解决方案也很棒,我只是没有找到它们
答案 0 :(得分:2)
您可以使用递归函数
Projectile
答案 1 :(得分:0)
您可以看到带有dontShow
外观的简单名称列表。
const
getNames = array => array.flatMap(({ name, dontShow, children }) => [
...(dontShow ? [] : [name]),
...getNames(children || [])
]),
array = [{ name: "name 1", dontShow: true, children: [{ name: "name 2", key4: 4, dontShow: false, children: [] }] }, { name: "name 3", dontShow: false, children: [{ name: "name 4", dontShow: true, children: [{ name: "name 5", dontShow: false, children: null, }] }] }],
result = getNames(array);
console.log(result);