我想访问数组中对象的键。
对象的例子是:
var trackobj = {
trackees: [{
john: {
"lat": "120000"
, "long": "12345"
}
, harry: {
"lat": "210000"
, "long": "5433333"
}
, sid: {
"lat": "420000"
, "long": "21345"
}
}]
}
我正在使用该功能:
function searchTrackee() {
for (var i = 0; i <= trackobj.trackees.length; i++) {
console.log(trackobj.trackees[i]['key']);
}
}
我期望的预期输出是&#34; john&#34; &#34;哈里&#34; &#34; SID&#34;
答案 0 :(得分:4)
我认为以下内容可以帮助您。
function searchTrackee() {
trackobj.trackees.forEach(function(obj) {
console.log(Object.keys(obj));
});
}
编辑1:
我也同意@MedAli。使用map并存储它是一个好习惯。然后单独打印。
function searchTrackee() {
var output = trackobj.trackees.map(function(obj){
return Object.keys(obj);
});
console.log(output);
}
答案 1 :(得分:3)
你可以用一个简单的for...in
语句来做到这一点:
for (var i = 0; i <= trackobj.trackees.length; i++) {
for(var key in trackobj.trackees[i]) {
console.log(key);
}
}
答案 2 :(得分:2)
您可以执行以下操作:
textarea
因此您可以更新代码,如下所示:
trackobj["trackees"].map(function(a){
return Object.keys(a)
})
输出是一个具有以下值的数组:
function searchTrackee() {
var results = trackobj["trackees"].map(function(a){
return Object.keys(a)
})
console.log(results)
}
["john","harry","sid"]
&#13;
答案 3 :(得分:0)
您还可以使用Array#reduce
获取所有姓名。
var trackobj = {trackees: [{
john: {
"lat": "120000"
, "long": "12345"
}, harry: {
"lat": "210000"
, "long": "5433333"
}, sid: {
"lat": "420000"
, "long": "21345"
}}]
}
var names = trackobj['trackees'].reduce((names,obj) => names.concat(Object.keys(obj)),[]
);
console.log(names);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;