如何在Javascript中设置数组中的JSON路径?

Bob*_*ijt 8 javascript arrays json

我有这个JSON

var myJSON = {
    "a": {
        "b": {
            "c": {
                "Foo": "Bar"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我也有这个数组:

var path = ["a", "b", "c", "foo"]
Run Code Online (Sandbox Code Playgroud)

我该如何使用路径获取Bar

I a*_*ica 15

退房.这将从中定义的每个嵌套属性名称开始并向下浏览.Array.prototype.reduce()myJSONpath

var myJSON = {
  "a": {
    "b": {
      "c": {
        "Foo": "Bar"
      }
    }
  }
};

var path = ["a", "b", "c", "Foo"]; // capitalized Foo for you...

var val = path.reduce((o, n) => o[n], myJSON);

console.log("val: %o", val);
Run Code Online (Sandbox Code Playgroud)

  • 通过对未定义值进行额外检查,这是我通常寻求的解决方案,简洁且直接。由于我现在已经多次回到这个答案,如果这个问题没有作为重复问题关闭,我会添加赏金作为奖励。 (2认同)

Ell*_*lle 6

有一个存储对象值的变量,然后遍历path访问该变量中的下一个属性,直到下一个属性未定义,此时变量保存end属性.

var val = myJSON;

while (path.length) {
    val = val[path.shift()];
}

console.log(val);
Run Code Online (Sandbox Code Playgroud)

  • `path.reverse()`在进入`while`(双关语意图:D)然后`pop()`之前就是它! (2认同)