从包含键路径的字符串中获取json值[重复]

2023-12-03

我有一个输入数组,路径如下

var path = ["foo","bar","baz"];

而且我有一个对象

var obj = {
    "foo": {
         "bar": {
              "baz": "cake"
         },
         "notbar": {
              "another": "value"
         }
    }
}

我想更改路径中的“baz”值。 我知道我可以使用

obj[path[0]][path[1]][path[2]] = "value";

但我不知道数组有多长。 php 和 javascript 答案都值得赞赏!


尝试这个:

function getValueByPath(obj, path) {
    var result = obj,
        i;
    for (i = 0; i < path.length; i++) {
        try {
            result = result[path[i]];
        }
        catch (e) {
            return undefined;
        }
    }
    return result
}

function setValueByPath(obj, path, value) {
    var result = obj,
        i;
    for (i = 0; i < path.length - 1; i++) {
        try {
            result = result[path[i]];
        }
        catch (e) {
            return;
        }
    }

    if (typeof value == 'object') {
        result[path[i]] = value;
    }
}

鉴于您的变量初始化,getValueByPath(obj, path)回报'cake',然后将其设置为setValueByPath(obj, path, 'value'); now getValueByPath(obj, path)回报'value'.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从包含键路径的字符串中获取json值[重复] 的相关文章

随机推荐