通过将键顺序作为字符串路径JSON来获取值

bul*_*ula 3 javascript json

有没有办法获得价值

{
    "first": "first-string",
    "second-array": [
        {
           "first-Obj": 2
        }
     ]
}
Run Code Online (Sandbox Code Playgroud)

有没有办法通过使用类似字符串的路径来获取或更新值

ex: to change the first-obj's value to 1000
    changeTheValueAt('second-array/0/firstObj', 1000)
Run Code Online (Sandbox Code Playgroud)

是否有任何像上面的changeTheValueAt或方法的功能.

MD *_*med 5

使用以下功能 -

function changeTheValueAt(obj, path, value) {
    var parts = path.split("/"),
        final = obj[parts[0]],
        i;

    for (i = 1; i < parts.length; i++) {
        if (i + 1 < parts.length) {
            final = final[parts[i]];
        }
        else {
            final[parts[i]] = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后像这样称呼它 -

var ob = {
    "first": "first-string",
    "second-array": [
        {
            "first-Obj": 2
        }
    ]
};

changeTheValueAt(ob, "second-array/0/first-Obj", 1000)

alert(ob["second-array"][0]["first-Obj"]);
Run Code Online (Sandbox Code Playgroud)

JSFiddle演示.