Я хочу получить доступ к ключам объектов в массиве.
Пример объекта:
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']);
}
}
Ожидаемый результат, который я ожидаю, - "john" "harry" "sid".
вы можете сделать это с помощью простого for...in
заявлении:
for (var i = 0; i <= trackobj.trackees.length; i++) {
for(var key in trackobj.trackees[i]) {
console.log(key);
}
}
Я думаю, что следующее вам поможет.
function searchTrackee() {
trackobj.trackees.forEach(function(obj) {
console.log(Object.keys(obj));
});
}
ИЗМЕНИТЬ 1:
Я также согласен с @MedAli. Хорошая практика - использовать карту и хранить ее. Затем распечатайте отдельно.
function searchTrackee() {
var output = trackobj.trackees.map(function(obj){
return Object.keys(obj);
});
console.log(output);
}
Вы можете сделать что-то вроде:
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"]
var trackobj = {
trackees: [{
john: {
"lat": "120000"
, "long": "12345"
}
, harry: {
"lat": "210000"
, "long": "5433333"
}
, sid: {
"lat": "420000"
, "long": "21345"
}
}]
}
function searchTrackee() {
var results = trackobj["trackees"].map(function(a){
return Object.keys(a)
})
console.log(results)
}
searchTrackee();
Вы также можете использовать 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);
.as-console-wrapper { max-height: 100% !important; top: 0; }