合并/展平数组数组

合并/展平数组数组

我有一个JavaScript数组,如:

[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]

我将如何将单独的内部数组合并为:

["$6", "$12", "$25", ...]


饮歌长啸
浏览 736回答 4
4回答

叮当猫咪

这是一个简短的函数,它使用一些较新的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]

翻阅古今

有一个容易混淆的隐藏方法,它构造一个新的数组而不改变原始的数组:var oldArray = [[1],[2,3],[4]];var newArray = Array.prototype.concat.apply([], oldArray);console.log(newArray); // [ 1, 2, 3, 4 ]

慕桂英546537

最好通过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), []);JS-小提琴Mozilla文档

繁星coding

您可以使用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);
打开App,查看更多内容
随时随地看视频慕课网APP