2017-06-15 14 views
1

私は以下のJSON構造を持っており、data.listのネストされた値を反復処理する必要があります。 console.log(data["list"][0]["My website is https://www.test.com"][0][0].command);でハードコードするとネストされた値を取得できますが、data.listのオブジェクト全体を反復しようとするとネストされません。JSONでネストされた配列オブジェクトと値にアクセスする

var data = { 
    "list": [ 
     { 
      "The first website is https://www.w3.org/": [ 
       [ 
        { 
         "command": "This is dummy content", 
         "new": false, 
         "message": "This was fun to make" 
        } 
       ] 
      ] 
     }, 
     { 
      "The second website is https://www.mozilla.org": [ 
       [ 
        { 
         "command": "This is the second command", 
         "new": true, 
         "message": "Lorem ipsum" 
        } 
       ] 
      ] 
     } 
    ], 
    "verified": false 
}; 


for (var i = 0; i < data.list.length; i++) { 
     // this doesn't work 
     console.log(data.list[i][0]["0"]["0"]).command; 
} 
+0

あなたはどんなエラーが出るのですか? –

+5

なぜプロパティを任意の文字列に設定しますか?あなたは本当にあなたのスキーマを再考する必要があります。 –

+0

あなたのjsonは非常に奇妙です、あなたは毎回1要素配列の1要素配列を持っていますか? – ValLeNain

答えて

1

オブジェクトの最初のキーを使用できます。

var data = { list: [{ "The first website is https://www.w3.org/": [[{ command: "This is dummy content", new: false, message: "This was fun to make" }]] }, { "The second website is https://www.mozilla.org": [[{ command: "This is the second command", new: true, message: "Lorem ipsum" }]] }], verified: false }, 
 
    i; 
 

 
for (i = 0; i < data.list.length; i++) { 
 
    console.log(data.list[i][Object.keys(data.list[i])[0]][0][0].command); 
 
}

1

リストの項目は、あなたが別のループ内でそれらを反復しているオブジェクトですので。また、オブジェクトであることを考慮する必要があります。したがって、オブジェクトプロパティを整数ではなくインデックスとして使用する必要があります。

以下に動作するはずです:

for (var i = 0; i < data.list.length; i++) { 
     // this doesn't work 
     for (var property in data.list[i]) { 
      console.log(data.list[i][property][0][0].command); 
     } 
} 
関連する問題