2017-07-29 1 views
1

Ich möchte auf die Schlüssel der Objekte im Array zugreifen.So greifen Sie auf den dynamischen Schlüssel in einem Array von Objekten zu

Das Beispiel des Objekts ist:

var trackobj = { 
     trackees: [{ 
      john: { 
       "lat": "120000" 
       , "long": "12345" 
      } 
      , harry: { 
       "lat": "210000" 
       , "long": "5433333" 
      } 
      , sid: { 
       "lat": "420000" 
       , "long": "21345" 
      } 
    }] 
    } 

ich die Funktion bin mit:

function searchTrackee() { 
     for (var i = 0; i <= trackobj.trackees.length; i++) { 
      console.log(trackobj.trackees[i]['key']); 
     } 
    } 

Die erwartete Ausgang erwarte ich ist "john" "Harry" "sid".

Antwort

3

Sie können wie diese es mit einer einfachen for...in Anweisung tun:

for (var i = 0; i <= trackobj.trackees.length; i++) { 
    for(var key in trackobj.trackees[i]) { 
     console.log(key); 
    } 
} 
4

denke ich Folgendes sollte Ihnen helfen.

function searchTrackee() { 
    trackobj.trackees.forEach(function(obj) { 
     console.log(Object.keys(obj)); 
    }); 
} 

EDIT 1:

ich auch mit @MedAli zustimmen. Es ist eine gute Vorgehensweise, die Karte zu verwenden und zu speichern. Dann separat drucken.

function searchTrackee() { 
    var output = trackobj.trackees.map(function(obj){ 
     return Object.keys(obj); 
    }); 
    console.log(output); 
} 
2

Sie können wie etwas tun:

trackobj["trackees"].map(function(a){ 
return Object.keys(a) 
}) 

So können Sie Ihren Code aktualisieren, wie folgt:

function searchTrackee() { 
    var results = trackobj["trackees"].map(function(a){ 
    return Object.keys(a) 
    }) 
    console.log(results) 
} 

Der Ausgang ist ein Array mit den Werten folgt:

["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

Sie können auch Array#reduce verwenden, um alle Namen zu bekommen.

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

Verwandte Themen