合并/扁平化一个数组的数组。
合并/扁平化一个数组的数组。
我有一个JavaScript数组,类似于:
[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]
我应该如何将子数组合并为一个数组,如:
["$6", "$12", "$25", ...]
admin 更改状态以发布 2023年5月20日
以下是使用一些新的JavaScript数组方法来平铺n维数组的简短函数。\n
function flatten(arr) { return arr.reduce(function (flat, toFlatten) { return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten); }, []); }
\n用法:\n
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]
ES2019
ES2019引入了Array.prototype.flat()
方法,您可以使用它来展平数组。它与大多数环境兼容,尽管仅在Node.js 11及以上版本中可用,而在Internet Explorer中根本不可用。
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);
旧浏览器
对于旧浏览器,您可以使用Array.prototype.concat
来合并数组:
var arrays = [ ["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"] ]; var merged = [].concat.apply([], arrays); console.log(merged);
使用concat
的apply
方法将第二个参数作为数组,因此最后一行与此相同:
var merged = [].concat(["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]);