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

3

我希望能够访问数组中对象的键。

对象的示例为:

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”。
4个回答

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);
}

3
你可以使用一个简单的for...in语句来完成,就像这样:
for (var i = 0; i <= trackobj.trackees.length; i++) {
    for(var key in trackobj.trackees[i]) {
        console.log(key);
    }
}

2
您可以这样做:
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(); 


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);
.as-console-wrapper { max-height: 100% !important; top: 0; }


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接