2017-02-16 45 views
2

獲得單個陣列我有數組這樣如何從多個陣列中的JavaScript

var arr = [ 
       [ {"c": 1},{"d": 2} ], 
       [ {"c": 2},{"d": 3} ] 
      ] 

我想更換成(由只有JavaScript)

var newArr = [{"c": 1},{"d": 2},{"c": 2},{"d": 3}] 

我已經通過地圖,但沒試過獲得預期的產出。

+0

請告訴我們你已經嘗試了什麼(有圖你試試) – Sebastian

+0

要數組的數組壓扁成單個陣列 –

+0

http://stackoverflow.com/questions/10865025/merge-f [複製] –

回答

8

您可以使用reduce()和傳播語法。

var arr = [ 
 
    [ {"c": 1},{"d": 2} ], 
 
    [ {"c": 2},{"d": 3} ] 
 
] 
 

 
var result = arr.reduce((r, e) => (r.push(...e), r), []) 
 
console.log(result)

+0

我希望的元素,我可以給予好評不止一次這更美麗的答案! – Jackthomson

5

試試這個..

var merged = [].concat.apply([], arr); 
1

在普通的JavaScript,你可以使用Array.portotype.forEach做到這一點。

var arr = [ 
 
       [ {"c": 1},{"d": 2} ], 
 
       [ {"c": 2},{"d": 3} ] 
 
      ]; 
 
       
 
var newArray = []; 
 

 
arr.forEach(function(e){ 
 
\t e.forEach(function(e1){ 
 
\t \t newArray.push(e1); 
 
\t }); 
 
}) 
 

 
console.log(newArray);

使用這個..

0

你可以使用Array#reduceArray#concat

var arr = [[{ c: 1 }, { d: 2 }], [{ c: 2 }, { d: 3 }]], 
 
    result = arr.reduce((r, a) => r.concat(a), []); 
 

 
console.log(result)

ES5

var arr = [[{ c: 1 }, { d: 2 }], [{ c: 2 }, { d: 3 }]], 
 
    result = arr.reduce(function (r, a) { return r.concat(a); }, []); 
 

 
console.log(result)