数组扁平化的两种方法

136 阅读1分钟

数组扁平化是指将多维数组(也称为嵌套数组)转化为一个一维数组,其中包含原始数组中的所有元素。这意味着不论原始数组有多少层嵌套,最终的结果都是一个没有嵌套结构的一维数组。这个过程可以通过递归或循环方式来实现。

方法一:使用递归来扁平化数组

function flattenArray(arr) {
  let result = [];
  
  arr.forEach(item => {  //遍历输入数组 arr 中的每个元素
    if (Array.isArray(item)) {
      // 检查子元素,如果是数组,递归调用flattenArray函数来继续扁平化这个子数组
      result = result.concat(flattenArray(item));
    } else {
      // 检查子元素,如果是单个元素,直接加入结果数组
      result.push(item);
    }
  });
  
  return result;
}

const nestedArray = [1, [2, [3, 4], 5], 6];
const flattenedArray = flattenArray(nestedArray);
console.log(flattenedArray); // 输出 [1, 2, 3, 4, 5, 6]

上面的代码定义了一个名为 flattenArray 的函数,它接受一个多维数组作为输入,并返回一个扁平化的一维数组。

方法二:使用 Array.prototype.flat() 方法(ES6)

ES6 引入了一个方便的方法 Array.prototype.flat(),它可以用来扁平化数组。

javascriptCopy code
const nestedArray = [1, [2, [3, 4], 5], 6];
const flattenedArray = nestedArray.flat(Infinity);
console.log(flattenedArray); // 输出 [1, 2, 3, 4, 5, 6]

使用 Infinity 作为参数,可以确保扁平化所有嵌套层级。