2017-07-07 15 views
0

すべてのデータを繰り返して表示できるように、多次元配列を連結しようとしています。入れ子のデータhereにアクセスする方法については非常に良い記事がありますが、私は特定のデータ構造で動作するソリューションを探しています。ここでJavascript Concat多次元配列

は私のデータです:

var data = { 
"Nike": [ 
    { 
    "id": "1", 
    "name": "test", 
    "myimage": "image.gif"}, 

    { 
    "id": "2", 
    "name": "test", 
    "myimage": "image.gif"} 
], 

"Adidas": [ 
    { 
    "id": "3", 
    "name": "Football Boots", 
    "myimage": "image.gif"}, 

    { 
    "id": "4", 
    "name": "Running Shoes", 
    "myimage": "image.gif"} 
]} 

私はこれを行う場合にはナイキの配列から値を取得することができるように見える:

var result = data.Adidas; 


for (var i = 0; i < result.length; i++) { 
var object = result[i]; 
for (property in object) { 
    var value = object[property]; 
    alert(property + "=" + value + "<br>"); 
} 
} 

私が表示できるようにしたいと思いますがすべての配列項目(IDの1〜4)私がしようとしている何

は次のとおりです。

var result = [].concat.apply([], data); 

...とループのためにこれを利用した結果変数をループが、それは動作しません。

私の理想的な最終結果は、4つの製品をそれぞれのブランド名で表示することです。私は実際のブランド名自体を示す必要はありません。例:

"id": "1", 
    "name": "test", 
    "myimage": "image.gif" 

"id": "2", 
    "name": "test", 
    "myimage": "image.gif" 

"id": "3", 
    "name": "Football Boots", 
    "myimage": "image.gif", 

"id": "4", 
    "name": "Running Shoes", 
    "myimage": "image.gif" 

ありがとうございました。

乾杯

+0

可能な複製[オブジェクト/配列/ JSONのアクセス/処理(ネスト)](https://stackoverflow.com/questions/11922383/access-process-nested-objects-arrays-or-json) – Liam

答えて

2

あなたは、あなたの配列を作成し、reduceを使用して、オブジェクトのキーを反復処理することができます。

var mashed = Object.keys(data).reduce(function(arr, key) { 
    return arr.concat(data[key]); 
}, []); 

デモ:https://jsfiddle.net/kvd6egn5/

+0

Perfect !!まさに私が探しているものですか?ありがとうございましたtymeJV – Hexana

1

削減するための代替はfor inループになります:

let res = []; 
for (let key in data) res = res.concat(data[key]); 
console.log(res);