2017-07-29 22 views
1

配列内のオブジェクトのキーにアクセスしたいとします。オブジェクトの配列内の動的キーにアクセスする方法

オブジェクトの例は次のとおりです。私は、関数を使用しています

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

期待される出力が "ジョン" "ハリー" "SID" です。

答えて

3

あなたは、このような単純なfor...in文でそれを行うことができます:私は、次はあなたを助けるべきだと思います

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

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

EDIT 1:

私はまた@MedAliに同意します。マップを使用して格納することをお勧めします。その後、別途印刷してください。

function searchTrackee() { 
    var output = trackobj.trackees.map(function(obj){ 
     return Object.keys(obj); 
    }); 
    console.log(output); 
} 
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; }

関連する問題