如何访问对象数组中的动态键

时间:2017-07-29 07:12:30

标签: javascript arrays object

我想访问数组中对象的键。

对象的例子是:

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;

4 个答案:

答案 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)
}

&#13;
&#13;
["john","harry","sid"]
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您还可以使用Array#reduce获取所有姓名。

&#13;
&#13;
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;
&#13;
&#13;