2017-08-15 69 views
1

如果在JavaScript中有像數組:我應該如何獲得數組中的數組作爲單個值數組?

[[2,3,4],"data","payload",[name1,name2,name3]] 

我應該怎麼得到的所有值一樣

結果陣列中的單個陣列應該是這樣的:

[2,3,4,"data","payload",name1,name2,name3] 
+0

可以使用lodash或下劃線? '_.flatten' – user3080953

+4

可能重複[在JavaScript中合併/拼合數組數組](https://stackoverflow.com/questions/10865025/merge-flatten-an-array-of-arrays-in-javascript) –

+0

不,我的代碼中沒有這些庫,需要用純Javascript完成。 –

回答

2

你可以使用CONCAT()到你的主陣列中的所有項目連接成一個大陣,我的理解是你追求的:

var my2dArray = [[2,3,4],"data","payload",[name1,name2,name3]]; 
var my1dArray = []; 


for(var i = 0; i < my2dArray.length; i++) 
{ 
    my1dArray = my1dArray.concat(my2dArray[i]); 
} 

console.log(my1dArray); // will be [2,3,4,"data","payload",name1,name2,name3] 
5

你可以用.concat()將其弄平。

var data = [[2,3,4],"data","payload",["name1","name2","name3"]]; 
 

 
console.log([].concat(...data));

傳遞給.concat()任何數組參數將被展平爲的結果。

這也使用「擴展語法」,它只適用於較新的引擎。對舊版支持使用.apply()

var data = [[2,3,4],"data","payload",["name1","name2","name3"]]; 
 

 
console.log(data.concat.apply([], data));

2

可以使用concat()

var array = [ 
 
    [2, 3, 4], 
 
    "data", 
 
    "payload", 
 
    ['name1', 'name2', 'name3'], 
 
] 
 

 
var newArr = [].concat.apply([], array); 
 

 
console.log(newArr);

+0

你真棒Sumner Evans! –