繁体   English   中英

通过映射数组创建展平数组

[英]Create flattened array by mapping arrays

我有以下一个或多个数组:

const aa = [
  [1,2,3],
  [4,5,6],
  ... could be more here
];

我想创建一个看起来像这样的数组:

[1,2,3,4,5,6]

我目前有:

const result = aa.map(a => [...a]);

result是:

[[1,2,3],[4,5,6]]

我知道如何使用以下方法展平数组:

var flattenedArray = [].concat(...result);

但是我只是想知道是否可以在map做任何其他操作来创建所需的结果,而无需执行额外的“展平”步骤?

执行join函数,然后使用parse函数解析结果。

 const aa = [ [1, 2, 3], [4, 5, 6] ]; console.log(JSON.parse(`[${aa.join()}]`)); 
 .as-console-wrapper { max-height: 100% !important } 

另外,您可以使用Spread operator

 const bb = [ [1, 2, 3], [4, 5, 6] ]; let newArray = [], i = bb.length; while (i --> 0) newArray = [...newArray, ...bb[bb.length - i - 1]]; console.log(newArray); 

资源

如果使用reduce()而不是map() ,则可以一步完成。

 const aa = [ [1,2,3], [4,5,6] ]; const result = aa.reduce((r, e) => [...r, ...e] , []); console.log(result) 

您可以进行检查,并将映射的扁平数组连接到新数组。

 var flat = a => [].concat(...(Array.isArray(a) ? a.map(flat) : [a])), array = [[1, 2, 3], [4, 5, [6, 7, 8]]], result = flat(array); console.log(result); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM