gpt4 book ai didi

javascript - 从javascript中的嵌套对象中获取最深层次的 child

转载 作者:行者123 更新时间:2023-11-30 08:27:50 25 4
gpt4 key购买 nike

我有两种类型的对象,groupitem。一个组可以有 children,它可以是 array of groupsarray of items

我最终得到了一系列嵌套组(可以是无限深的层次),我需要检索所有项目,无论深度有多少,只有一个组可以使用。

有没有办法从以下数据结构中的顶级组中检索所有项目?

{
type: 'group',
children: [
{
type: 'group',
children: [
{
type: 'group',
children: [{type:'item'}, {type:'item'}, {type:'item'}]
},
{
type: 'group',
children: [{type:'item'}, {type:'item'}, {type:'item'}]
},
{
type: 'group',
children: [{type:'item'}, {type:'item'}, {type:'item'}]
},
]
},
{
type: 'group',
children: [
{
type: 'group',
children: [{type:'item'}]
},
{
type: 'group',
children: [{type:'item'}]
},
{
type: 'group',
children: [{type:'item'}]
},
]
},
{
type: 'group',
children: [
{
type: 'group',
children: [{type:'item'}, {type:'item'}]
},
{
type: 'group',
children: [{type:'item'}, {type:'item'}]
},
{
type: 'group',
children: [{type:'item'}, {type:'item'}]
},
]
},
]
}

最佳答案

您可以对 Array#reduce 使用迭代并通过再次调用 iter 递归,方法。

var data = { children: [{ children: [{ children: [{ name: 'item1' }, { name: 'item2' }, { name: 'item3' }] }, { children: [{ name: 'item1' }, { name: 'item2' }, { name: 'item3' }] }, { children: [{ name: 'item1' }, { name: 'item2' }, { name: 'item3' }] }] }, { children: [{ children: [{ name: 'item1' }] }, { children: [{ name: 'item1' }] }, { children: [{ name: 'item1' }] }] }, { children: [{ children: [{ name: 'item1' }, { name: 'item2' }, { name: 'item3' }] }, { children: [{ name: 'item1' }, { name: 'item2' }, { name: 'item3' }] }, { children: [{ name: 'item1' }, { name: 'item2' }, { name: 'item3' }] }] }] },
children = [data].reduce(function iter(r, a) {
if (Array.isArray(a.children)) {
return a.children.reduce(iter, r);
}
r.push(a);
return r;
}, []);

console.log(children);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 从javascript中的嵌套对象中获取最深层次的 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42577357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com