js解析多层嵌套的json,取出所有父元素相同元素组成新数组并返回?

发布于 2022-09-11 17:44:41 字数 1136 浏览 14 评论 0

比如这样的一个多层数组,

let json = [
    {
        id: '1',
        name: '节点1',
        children: [
            {
                id: '1-1',
                name: '节点1-1',
                children: [
                    {
                        id: '1-1-1',
                        name: '节点1-1-1'
                    },
                    {
                        id: '1-1-2',
                        name: '节点1-1-2'
                    }
                ]
            },
            {
                id: '1-2',
                name: '节点1-2'
            }
        ]
    },
    {
        id: '2-1',
        name: '节点2-1'
    },
    {
        id: '3-1',
        name: '节点3-1',
        children: [
            {
                id: '3-1-1',
                name: '节点3-1-1'
            }
        ]
    }
]

比如说函数为searchParentElementArrays;
当我传入searchParentElementArrays(json, id)的时候打印:

[['1', '1-1', '1-1-1'],['1', '1-1', '1-1-2'],['1', '1-2'],['2-1'],['3-1','3-1-1']]

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

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

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

发布评论

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

评论(1

冷夜 2022-09-18 17:44:41
function searchParentElementArrays (json, key) {
  const res = []
  const f = (json, arr) => json.forEach(val => val.children ? f(val.children, [...arr, val[key]]) : res.push([...arr, val[key]]))
  f(json, [])
  return res
}

console.log(searchParentElementArrays(json, 'id'))

json标准的话就这样 不然还需判断key是否存在 children是否是空数组之类的

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