2017-07-07 96 views
0

我試圖concat一個多維數組,所以我可以迭代和顯示所有的數據。有關於如何訪問嵌套數據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); 

...並在循環使用循環相同的結果變量,但它不工作。

我的理想最終結果是顯示每個品牌下的四種產品。我不需要顯示實際的品牌名稱。例如:

"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

完美!正是我正在尋找的東西。非常感謝 – Hexana

1

一種替代,以減少將是一個for in循環:

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