只想获取数组里的第三层的id 应该要怎么做?

发布于 2022-09-13 01:25:43 字数 702 浏览 18 评论 0

1、多层数组嵌套,只想返回单独返回最后一层的id 为[2,3,5,6,...]应该怎么做?

[
    {
        id: 1,
        age: 23,
        name: bear,
        children: [
            {
                id: 2,
                age: 24,
                name: bear2
            },
            {
                id: 3,
                age: 24,
                name: bear3
            },
        ],
    },
    {
        id: 4,
        age: 26,
        name: bear2,
        children: [
            {
                id: 5,
                age: 24,
                name: bear4
            },
            {
                id: 6,
                age: 24,
                name: bear5
            },
        ],
    }
]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

太阳哥哥 2022-09-20 01:25:43

混分。。^_^

let a = [
      { id: 1, children: [{ id: 2 }] },
      { id: 3, children: [] }
    ];
    function func(arr) {
      return arr.reduce((a, b) => {
        return b.children ? [...a, ...func(b.children)] : [...a, b.id];
      }, []);
    }
    console.log(func(a));
夏尔 2022-09-20 01:25:43
[
    {
        id: 1,
        age: 23,
       
        children: [
            {
                id: 2,
                age: 24,
               
            },
            {
                id: 3,
                age: 24,
              
            },
        ],
    },
    {
        id: 3,
        age: 26,
      
        children: [
            {
                id: 4,
                age: 24,
               
            },
            {
                id: 5,
                age: 24,
            
            },
        ],
    }
].reduce((acc,cur)=>(cur.children.forEach(({id})=>acc.push(id)),acc),[])
// [2, 3, 4, 5]
暖阳 2022-09-20 01:25:43
var arr = [
    {
        id: 1,
        name: "bear1",
        children: [
            {
                name: "bear12"
            },
            {
                id: 3,
                name: "bear13"
            },
        ],
    },
    {
        id: 3,
        name: "bear2",
        children: [
        ],
    }
];
arr.reduce((result, item) => {
    // 3
    (item.children || []).some(node => node.id) && result.push(item);
    // 2
    (item.children || []).some(node => node.id  && result.push(node));
    // 1
    result.push(item);
    (item.children || []).some(node => node.id  && result.push(node));
    return result
}, [])

吐槽一下你的题目不清晰,感觉有3钟理解
1.获取 children 里面带 id 的项,构成数组
2.获取 children 里面带 id 的项,和 对应的父节点内容,构成数组(不清楚 children 部分是否需要)
3.根据 children 是否带 id 的项,过滤父节点

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文