所以说我有一个对象数组,对象内部有对象。此数据是动态的,即密钥不会相同,可能会有所不同。 例如:
[
{
"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对象。调用sortPatient时,我可以通过传递我想要其值的key
来调用它。例如:sortPatient('givenName')
或sortPatient('age')
。
这将在控制台中记录Dale
或32
。但是,如果我调用sortPatient('extraIdentifiers.National ID')
,则它不会在控制台中记录NAT2804
,而是记录未定义的日志。我也尝试过像sortPatient('extraIdentifiers[National ID]')
这样称呼它,但仍然显示未定义。
如何获取键中的键值?我也无法更改函数的调用方式。我只能更改其定义。但是我无法获取复杂对象中的键值。
答案 0 :(得分:1)
相反,我会将带有键的数组传递给您的方法,然后检查对象是否包含给定的键路径。
$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']);