2017-05-10 43 views
0

私はこれを徹底的に徹底的に解消しています。JavaScriptオブジェクト内で子データを取得する

私はこのようになり、データを返しているサービスがあります。 enter image description here

あなたは親オブジェクトの下にネストされたGUIDを持つオブジェクトが存在するが表示されます。私はすべての "GUID"オブジェクトをループし、属性(つまり、作成者、コンテンツなど)を取得する必要があります。

GUIDは動的です(私は彼らが前もって何かを知っていません)。その下にある属性はわかっています。

どのようにターゲットを設定するのか困惑しています。私は正常にforまたはforEachループを使用するように見えることはできません。

ネイティブJavaScriptを使用する必要があります(これにはjQueryはありません)。

+0

ネストされたレベルに応じてネストされた 'for'を使う簡単な方法' for(var i = 0; i Aria

答えて

2

が可能なソリューションです:ここで

var keys = Object.keys(data); 
var results = 
keys.map(
    function(key){ 
     var datum = data[key]; 
     // do whatever with the data. 
     return { 
     "author" : data["author"] 
     } 
    } 
) 
// now results is an array of {"author"} objects. 
+0

これは私のために働いた。 –

1

var x = { 
 
    'a-45-2455': { 
 
    'author': 'Some Name' 
 
    } 
 
}; 
 
    var keys = Object.keys(x); 
 
    keys.forEach(function(key,value){ 
 
     var author = x[key]['author']; 
 
     console.log(author); 
 
    });

あなたはこの方法でデータにアクセスすることができます。 値から別の配列を作成して使用することもできます。オブジェクトの使用をループするために

1

for...in

オブジェクトのコードを投稿していないので、あなたがいる場合は、ここではダミーオブジェクト

var x = { 
 
    'a-45-2455': { 
 
    'author': 'Some Name' 
 
    } 
 
} 
 
    for(var keys in x){ 
 
    alert(x[keys].author) 
 

 

 
}

1

とスニペットですすべてのGUIDを反復処理するには、角try.forEachループを使用します。そうでなければ、それぞれのjavascriptで使用できます。下記のコードスニペットを参照してください。

var user ={ 
 
    '1': { 
 
    "name":'abc', 
 
    "age":26 
 
    }, 
 
    '2': { 
 
    "name":'def', 
 
    "age":28 
 
    } 
 
}; 
 

 
for(var key in user) { 
 
    console.log(user[key].name); 
 
}

1

私はあなたがループのための高度を使用してすべてのインデックスを反復処理できると信じています。 a.bは、javascriptのa["b"]と同じです。ここで

1

はJSONオブジェクトあなたは、このようなオブジェクトのプロパティを通して繰り返すことができ

var obj = {a: 1, b: 2, c: {a: 1, b: 2}}; 
function walk(obj) { 
for (var key in obj) { 
if (obj.hasOwnProperty(key)) { 
    var val = obj[key]; 
    console.log(val); 

     walk(val); 
     } 
     } 
    } 
walk(obj); 

var obj = {a: 1, b: 2, c: {a: 1, b: 2}}; 
 
function walk(obj) { 
 
    for (var key in obj) { 
 
    if (obj.hasOwnProperty(key)) { 
 
     var val = obj[key]; 
 
     console.log(val); 
 
     
 
     walk(val); 
 
    } 
 
    } 
 
} 
 
walk(obj);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

を反復処理する別の方法です:

for(let key in Response){ 
    if(!Response.hasOwnProperty(key)) 
    continue; 
    //key will be each GUID 
    let yourObject = Response[key] //Each object in the list of objects 
} 

あなたは助け程度for...in loops here

希望を読むことができます!

関連する問題