70

私は以下をループしようとしています:

{
    "messages": [{
        "msgFrom": "13223821242",
        "msgBody": "Hi there"
    }, {
        "msgFrom": "Bill",
        "msgBody": "Hello!"
    }]
}

回収したいしmsgFrommsgBody

私はもう試した:

        for (var key in data) {
           var obj = data[key];
           for (var prop in obj) {
              if(obj.hasOwnProperty(prop)){
                console.log(prop + " = " + obj[prop]);
              }
           }
        }

しかし、コンソールログが出力されます[Object]

私が間違っていることは何ですか?

4

11 に答える 11

22

forEach メソッドを使用して、オブジェクトの配列を反復処理できます。

data.messages.forEach(function(message){
    console.log(message)
});

参照: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

于 2017-01-07T16:52:55.860 に答える
14

ここで提供されるすべての回答は通常の関数を使用しますが、最近ではほとんどのコードで ES6 のアロー関数が使用されています。私の答えが、オブジェクトの配列を反復処理するときにアロー関数を使用する方法について読者に役立つことを願っています

let data = {
      "messages": [{
           "msgFrom": "13223821242",
           "msgBody": "Hi there"
       }, {
          "msgFrom": "Bill",
          "msgBody": "Hello!"
       }]
 }

アロー関数を使用して配列に対して .forEach を実行します

 data.messages.forEach((obj, i) => {
     console.log("msgFrom", obj.msgFrom);
     console.log("msgBody", obj.msgBody);
 });

アロー関数を使用して配列に .map を実行します

 data.messages.map((obj, i) => {
     console.log("msgFrom", obj.msgFrom);
     console.log("msgBody", obj.msgBody);
 });
于 2018-09-05T18:04:43.660 に答える
0

オブジェクト (人物) 内のフィールド オブジェクトをループする一般的な方法を次に示します。

for (var property in person) {
    console.log(property,":",person[property]);
}

person obj は次のようになります。

var person={
    first_name:"johnny",
    last_name: "johnson",
    phone:"703-3424-1111"
};
于 2020-12-13T22:06:04.730 に答える