一尘不染

Javascript / JSON获取给定子节点的路径?

json

您如何获取到对象的给定子节点的JSON路径?

例如:

var data = {
    key1: {
        children: {
            key2:'value',
            key3:'value',
            key4: { ... }
        }, 
    key5: 'value'
}

给出了一个引用key4的变量。现在,我正在寻找绝对路径:

data.key1.children.key4

有什么办法可以在JS中完成这项工作吗?

先感谢您。


阅读 224

收藏
2020-07-27

共1个答案

一尘不染

因此,您有一个值为“ key3”的变量,并且您想知道如何基于此字符串的值动态访问此属性?

var str = "key3";
data["key1"]["children"][str];

编辑

哇,我不敢相信我是第一次尝试。其中可能存在一些错误,但是它适用于您的测试用例

现场演示

var x = data.key1.children.key4;

var path = "data";
function search(path, obj, target) {
    for (var k in obj) {
        if (obj.hasOwnProperty(k))
            if (obj[k] === target)
                return path + "['" + k + "']"
            else if (typeof obj[k] === "object") {
                var result = search(path + "['" + k + "']", obj[k], target);
                if (result)
                    return result;
            }
    }
    return false;
}

var path = search(path, data, x);
console.log(path); //data['key1']['children']['key4']
2020-07-27