首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >合并/展平数组的数组

合并/展平数组的数组
EN

Stack Overflow用户
提问于 2012-06-03 02:53:47
回答 65查看 975.4K关注 0票数 1.4K

我有一个像这样的JavaScript数组:

代码语言:javascript
复制
[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]

我该如何将独立的内部数组合并成一个这样的数组:

代码语言:javascript
复制
["$6", "$12", "$25", ...]
EN

回答 65

Stack Overflow用户

发布于 2013-02-23 01:41:10

下面是一个简短的函数,它使用一些较新的JavaScript数组方法来展平n维数组。

代码语言:javascript
复制
function flatten(arr) {
  return arr.reduce(function (flat, toFlatten) {
    return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);
  }, []);
}

用法:

代码语言:javascript
复制
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]
票数 575
EN

Stack Overflow用户

发布于 2013-03-14 06:12:32

有一个令人困惑的隐藏方法,它构造一个新的数组,而不会改变原来的数组:

代码语言:javascript
复制
var oldArray = [[1],[2,3],[4]];
var newArray = Array.prototype.concat.apply([], oldArray);
console.log(newArray); // [ 1, 2, 3, 4 ]

票数 337
EN

Stack Overflow用户

发布于 2013-08-19 13:58:33

最好的方法是使用javascript reduce函数。

代码语言:javascript
复制
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:

代码语言:javascript
复制
arrays = arrays.reduce((a, b) => a.concat(b), []);

js-fiddle

Mozilla docs

票数 236
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10865025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档