96

私はこのオブジェクトを持っています。このオブジェクトを JavaScript で繰り返し処理したいと考えています。これはどのように可能ですか?

var dictionary = {
    "data": [
        {"id":"0","name":"ABC"},
        {"id":"1","name":"DEF"}
    ],
    "images": [
        {"id":"0","name":"PQR"},
        {"id":"1","name":"xyz"}
    ]
};
4

9 に答える 9

143

あなたは以下のコードでそれを行うことができます。まず、dictionary.dataを使用してデータ配列を取得し、それをデータ変数に割り当てます。その後、通常のforループを使用して反復処理できます。各行は、配列内の行オブジェクトになります。

var data = dictionary.data;

for (var i in data)
{
     var id = data[i].id;
     var name = data[i].name;
}

同様のアプローチに従って、画像配列を反復処理できます。

于 2013-03-19T10:14:21.623 に答える
30

この方法もあります(EcmaScript5の新機能):

dictionary.data.forEach(function(item){
    console.log(item.name + ' ' + item.id);
});

画像に対する同じアプローチ

于 2013-03-19T10:14:56.763 に答える
8

そんな感じ:

var dictionary = {"data":[{"id":"0","name":"ABC"},{"id":"1", "name":"DEF"}], "images": [{"id":"0","name":"PQR"},{"id":"1","name":"xyz"}]};

for (item in dictionary) {
  for (subItem in dictionary[item]) {
     console.log(dictionary[item][subItem].id);
     console.log(dictionary[item][subItem].name);
  }
}
于 2013-03-19T10:16:45.977 に答える
4

ドット表記および/またはブラケット表記を使用してオブジェクトのプロパティにアクセスし、forループを使用して配列を反復します。

var d, i;

for (i = 0; i < dictionary.data.length; i++) {
  d = dictionary.data[i];
  alert(d.id + ' ' + d.name);
}

for..inループを使用して配列を反復することもできます。ただし、追加されたプロパティArray.prototypeが表示される場合があり、配列要素を正しい順序で、または一貫した順序で取得するとは限りません。

于 2013-03-19T10:19:19.863 に答える
3

ジェネレーター関数を使用すると、深いキー値を反復処理できます。

function * deepEntries(obj) { 
    for(let [key, value] of Object.entries(obj)) {
        if (typeof value !== 'object') 
            yield [key, value]
        else 
            for(let entries of deepEntries(value))
                yield [key, ...entries]
    }
}

const dictionary = {
    "data": [
        {"id":"0","name":"ABC"},
        {"id":"1","name":"DEF"}
    ],
    "images": [
        {"id":"0","name":"PQR"},
        {"id":"1","name":"xyz"}
    ]
}

for(let entries of deepEntries(dictionary)) {
    const key = entries.slice(0, -1).join('.')
    const value = entries[entries.length-1]
    console.log(key, value)
}

于 2013-03-19T10:13:10.217 に答える
2
for(index in dictionary) {
 for(var index in dictionary[]){
    // do something
  }
}
于 2013-03-19T10:14:36.600 に答える