JavaScript数组扁平化方法大全,帮你轻松解决多维数组的烦恼!

19 min read

扁平化一个数组意味着把嵌套的数组转换为一个一维数组。

以下是一些将嵌套数组扁平化的方法:

  1. 使用递归函数:递归地遍历数组,当遇到一个元素是数组时,继续递归遍历该数组,直至遍历至非数组元素,然后将该元素加入到扁平化数组。

  2. 使用Array.prototype.flat()方法:该方法返回一个新数组,该数组将所有子数组的元素连接成一个新数组,并基于指定的深度递归下去。

  3. 使用reduce方法:reduce方法可将所有元素纵向归约成一个扁平化数组。

  4. 使用扩展运算符:使用 ... 运算符可以将数组的所有元素打散,从而将嵌套数组变成一个一维数组。

示例:

// 递归方法
function flattenRecursive(arr) {
  return arr.reduce((prev, curr) => {
    return prev.concat(Array.isArray(curr) ? flattenRecursive(curr) : curr);
  }, []);
}

// Array.prototype.flat()方法
const arr1 = [1, 2, [3, 4, [5, 6]]];
console.log(arr1.flat(2)); // [1, 2, 3, 4, 5, 6]

// reduce方法
function flatten(arr) {
  return arr.reduce(function(prev, curr) {
    return prev.concat(Array.isArray(curr) ? flatten(curr) : curr);
  }, []);
}

// 扩展运算符
const arr2 = [1, 2, [3, 4, [5, 6]]];
console.log([].concat(...arr2)); // [1, 2, 3, 4, 5, 6]