返回

扁平化 JavaScript 数组:三种简单方法

前端

在 JavaScript 中,将多维数组转换为一维数组的过程称为数组扁平化。本文将介绍三种简单的方法来实现数组扁平化:ES6 flat() 方法、for 循环和 while 循环。

ES6 flat() 方法

ES6 提供了一个简洁且高效的 flat() 方法,用于扁平化数组。该方法接受一个可选的 depth 参数,指定要扁平化的嵌套层数。如果您希望将数组完全扁平化,只需将 depth 设置为 Infinity 即可。

const arr = [1, 2, [3, 4], [5, 6, [7, 8]]];
const flattenedArr = arr.flat(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8]

for 循环

如果您不熟悉 ES6 语法,可以使用 for 循环手动扁平化数组。该方法涉及循环遍历数组,并检查每个元素是否也是一个数组。如果是,则递归地将该数组添加到结果数组中。否则,将元素本身添加到结果数组中。

const arr = [1, 2, [3, 4], [5, 6, [7, 8]]];
const flattenedArr = [];

for (let i = 0; i < arr.length; i++) {
  if (Array.isArray(arr[i])) {
    flattenedArr.push(...arr[i]);
  } else {
    flattenedArr.push(arr[i]);
  }
}

// [1, 2, 3, 4, 5, 6, 7, 8]

while 循环

while 循环的扁平化方法与 for 循环方法类似,但它使用 while 循环而不是 for 循环来遍历数组。这对于处理非常大的数组可能更有利,因为它允许您在遍历数组的过程中逐步添加元素。

const arr = [1, 2, [3, 4], [5, 6, [7, 8]]];
const flattenedArr = [];
let i = 0;

while (i < arr.length) {
  if (Array.isArray(arr[i])) {
    arr = arr.concat(arr[i]);
  } else {
    flattenedArr.push(arr[i]);
  }

  i++;
}

// [1, 2, 3, 4, 5, 6, 7, 8]

总之,ES6 flat() 方法是最简单、最有效的 JavaScript 数组扁平化方法。如果您不熟悉 ES6,可以使用 for 循环或 while 循环手动扁平化数组。通过使用这些方法,您可以轻松地将任何多维数组转换为一维数组。