4 回答

TA貢獻1776條經驗 獲得超12個贊
這是一個簡短的函數,它使用一些較新的JavaScript數組方法來展平n維數組。
function flatten(arr) {
return arr.reduce(function (flat, toFlatten) {
return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);
}, []);
}
用法:
flatten([[1, 2, 3], [4, 5]]); // [1, 2, 3, 4, 5]
flatten([[[1, [1.1]], 2, 3], [4, 5]]); // [1, 1.1, 2, 3, 4, 5]

TA貢獻1780條經驗 獲得超5個贊
有一個容易混淆的隱藏方法,它構造一個新的數組而不改變原始的數組:
var oldArray = [[1],[2,3],[4]];
var newArray = Array.prototype.concat.apply([], oldArray);
console.log(newArray); // [ 1, 2, 3, 4 ]

TA貢獻1848條經驗 獲得超10個贊
最好通過javascript reduce函數來完成。
var arrays = [["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"], ["$0"], ["$15"],["$3"], ["$75"], ["$5"], ["$100"], ["$7"], ["$3"], ["$75"], ["$5"]];
arrays = arrays.reduce(function(a, b){
return a.concat(b);
}, []);
或者,使用ES2015:
arrays = arrays.reduce((a, b) => a.concat(b), []);

TA貢獻1797條經驗 獲得超4個贊
您可以使用concat合并數組:
var arrays = [
["$6"],
["$12"],
["$25"],
["$25"],
["$18"],
["$22"],
["$10"]
];
var merged = [].concat.apply([], arrays);
console.log(merged);
使用apply
方法concat
只會將第二個參數作為數組,所以最后一行與此相同:
var merged2 = [].concat(["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]);
還有一種實驗Array.prototype.flat()
方法(尚未成為ECMAScript標準的一部分),您可以使用它來展平陣列,盡管它在Edge或Node.js中尚不可用。
const arrays = [
["$6"],
["$12"],
["$25"],
["$25"],
["$18"],
["$22"],
["$10"]
];
const merge3 = arrays.flat(1); //The depth level specifying how deep a nested array structure should be flattened. Defaults to 1.
console.log(merge3);
添加回答
舉報