如何从Javascript中的对象动态获取值?

如何从Javascript中的对象动态获取值?,javascript,arrays,json,angularjs,Javascript,Arrays,Json,Angularjs,假设我有一个对象数组,对象中有对象。此数据是动态的,即按键不相同,可能不同。 例如: [ { "uuid": "53e7202c-28c8-4083-b910-a92c946a7626", "extraIdentifiers": { "National ID": "NAT2804" }, "givenName": "Krishnan", "customAttribute": null, "age": "32" }, { "uui

假设我有一个对象数组,对象中有对象。此数据是动态的,即按键不相同,可能不同。 例如:

[
{
    "uuid": "53e7202c-28c8-4083-b910-a92c946a7626",
    "extraIdentifiers": {
      "National ID": "NAT2804"
    },
    "givenName": "Krishnan",
    "customAttribute": null,
    "age": "32"
},
{
    "uuid": "9717ec58-8f87-4305-a57b-bed54301def7",
    "extraIdentifiers": {
      "National ID": "NAT2805"
    },
    "givenName": "Dale",
    "customAttribute": null,
    "age": "32"
},
{
    "uuid": "d3563522-927d-4ff0-b697-eb164289a77d",
    "extraIdentifiers": {
      "National ID": "NAT2806"
    },
    "givenName": "David",
    "age": "32"
}
]
现在我有一个函数,它将从其中一个键获取值。例如,我想获得givenName,因此它将返回例如David

这是它的代码:

$scope.sortPatient = function (param) {
    $scope.results.map(function (currentObj) {
        console.log(currentObj[param]);
    })
};
$scope.results将保存上述JSON Obj。调用sortPatient时,我会通过传递我想要的值的键来调用它。例如:sortPatient'givename'或sortPatient'age'

这将在控制台中记录Dale或32。但是如果我调用sortPatient'extralidentifiers.National ID',它不会在控制台中记录NAT2804,而是记录未定义。我也试着像sortPatient一样称呼它为“extraIdentifiers[National ID]”,但它仍然显示未定义


我如何才能在关键帧中获取关键帧的值?我也不能改变调用函数的方式。我只能更改其定义,但无法获取复杂对象中键的值。

我将向您的方法传递一个包含键的数组,然后检查该对象是否包含给定的键路径

$scope.sortPatient = function (params) {
  $scope.results.map(function (currentObj) {
     var res = currentObj;
     params.forEach(function(param){
        if(res[param]) res = res[param];
     })
     console.log("res",res);
  })
};

$scope.sortPatient(['extraIdentifiers','National ID']);

很酷,我也想写这样的东西。不必传递数组,他也可以使用String.split'.'解析函数中的参数-因此extralidentifiers.National将变成['extralidentifiers','National ID'.@Gibor Yes。那也行,是个不错的选择。这就是我需要的。但我无法理解解决方案是如何工作的。你能帮我理解一下吗?谢谢