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

时间:2015-09-03 19:30:40

标签: javascript arrays json

我有这个JSON

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

我也有这个数组:

var path = ["a", "b", "c", "foo"]

如何使用路径获取Bar

4 个答案:

答案 0 :(得分:15)

结帐Array.prototype.reduce()。这将从myJSON开始,向下浏览path中定义的每个嵌套属性名称。



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);




答案 1 :(得分:6)

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

var val = myJSON;

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

console.log(val);

答案 2 :(得分:4)

function access(json, path, i) {
  if (i === path.length)
    return json;
  return access(json[path[i]], path, i + 1);
}

使用:

access(myJSON, path, 0)

答案 3 :(得分:0)

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

var path = ["a", "b", "c", "Foo"]


var findViaPath = function (path, object) {
    var current = object;

    path.forEach(function(e) { 
        if (current && e in current) {
            current = current[e];
        } else {
            throw new Error("Can not find key " + e)
        }
    })

    return current;
}

findViaPath(path, myJSON);