如何在JavaScript中扁平化指定结构的二维数组?
实现数组的部分扁平化(仅展开第一层嵌套)
假设你有如下嵌套数组,元素可以是文本、数字或其他数组:
var array = [[1,2],[ [3,4],[5,6] ],[1,2],[1,2]]
需要得到的结果是将第二层的子数组直接展开至外层,同时保留最内层的数组结构:
var flattened = [[1,2],[3,4],[5,6],[1,2],[1,2]]
以下是几种可行的实现方法:
方法1:使用Array.prototype.flat()
flat()方法可以指定扁平化的深度,传入1即可仅展开一层嵌套:
var array = [[1,2],[ [3,4],[5,6] ],[1,2],[1,2]]; var flattened = array.flat(1); console.log(flattened); // 输出: [[1,2],[3,4],[5,6],[1,2],[1,2]]
方法2:使用reduce + concat(兼容旧环境)
如果运行环境不支持flat,可以用reduce遍历数组,结合concat合并元素:
var array = [[1,2],[ [3,4],[5,6] ],[1,2],[1,2]]; var flattened = array.reduce((acc, curr) => acc.concat(curr), []); console.log(flattened); // 输出: [[1,2],[3,4],[5,6],[1,2],[1,2]]
方法3:使用扩展运算符... + concat
利用扩展运算符展开外层数组元素,再通过concat合并为新数组:
var array = [[1,2],[ [3,4],[5,6] ],[1,2],[1,2]]; var flattened = [].concat(...array); console.log(flattened); // 输出: [[1,2],[3,4],[5,6],[1,2],[1,2]]
内容的提问来源于stack exchange,提问作者icecream sugar black
相关产品推荐
相关产品推荐

