如何从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。那也行,是个不错的选择。这就是我需要的。但我无法理解解决方案是如何工作的。你能帮我理解一下吗?谢谢