如果在JavaScript中有像數組:我應該如何獲得數組中的數組作爲單個值數組?
[[2,3,4],"data","payload",[name1,name2,name3]]
我應該怎麼得到的所有值一樣
結果陣列中的單個陣列應該是這樣的:
[2,3,4,"data","payload",name1,name2,name3]
如果在JavaScript中有像數組:我應該如何獲得數組中的數組作爲單個值數組?
[[2,3,4],"data","payload",[name1,name2,name3]]
我應該怎麼得到的所有值一樣
結果陣列中的單個陣列應該是這樣的:
[2,3,4,"data","payload",name1,name2,name3]
你可以使用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]
你可以用.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));
使用reduce()
這一點。
const array = [[2,3,4],"data","payload",["name1","name2","name3"]]
const flattenedArray = array.reduce((a, b) => a.concat(b), [])
console.log(flattenedArray)
MDN參考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
謝謝,克里斯托弗!喜歡你的解決方案。 –
可以使用concat()
:
var array = [
[2, 3, 4],
"data",
"payload",
['name1', 'name2', 'name3'],
]
var newArr = [].concat.apply([], array);
console.log(newArr);
你真棒Sumner Evans! –
可以使用lodash或下劃線? '_.flatten' – user3080953
可能重複[在JavaScript中合併/拼合數組數組](https://stackoverflow.com/questions/10865025/merge-flatten-an-array-of-arrays-in-javascript) –
不,我的代碼中沒有這些庫,需要用純Javascript完成。 –