合并/展平数组数组

新手上路,请多包涵

我有一个 JavaScript 数组,例如:

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

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

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

原文由 Andy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 388
2 个回答

您可以使用 concat 合并数组:

 var arrays = [
 ["$6"],
 ["$12"],
 ["$25"],
 ["$25"],
 ["$18"],
 ["$22"],
 ["$10"]
 ];
 var merged = [].concat.apply([], arrays);

 console.log(merged);

使用 concatapply 方法只会将第二个参数作为一个数组,所以最后一行与此相同:

 var merged2 = [].concat(["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]);


还有 Array.prototype.flat() 方法(在 ES2019 中引入),您可以使用它来展平数组,尽管 它仅在 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);

原文由 Gumbo 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

原文由 Noah Freitas 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题