json中如何根据指定的key获取它的父节点-js?

发布于 2022-09-06 23:13:08 字数 259 浏览 13 评论 0

Code

var json={
    family:{
        father:{
            son:{
                name:"zhangsan"
            }
        }
    }
}

描述

使用js写一个方法,根据指定的key获取它的父节点,比如知道son,如果获取它的父节点father?

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

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

发布评论

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

评论(2

情定在深秋 2022-09-13 23:13:08
function findKey(obj, key) {
    if (typeof obj !== 'object') {
        return
    }
    var ret
    Object.keys(obj).forEach(_key => {
        if (key === _key) {
            ret = obj
        } else {
          ret = ret|| findKey(obj[_key], key)
        }
    })
    return ret
}

非递归算法

function findKey(obj, key) {
                var queue = Object.keys(obj).map(k => ({item: obj[k], parent: obj, key: k}))
                while(queue.length > 0) {
                    var top = queue.shift()
                    if (top.key === key) {
                        return top.parent
                    }
                    if (typeof top.item === 'object') {
                        queue.push(...Object.keys(top.item).map(k => ({item: top.item[k], parent: top.item, key: k})))
                    }
                }
            }
独自←快乐 2022-09-13 23:13:08

看了上面的答案,都是返回父节点father的值,那如果要求返回的是 father,这个父节点的key,还要双层循环吗加递归吗?

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