数组扁平化

37 阅读1分钟

数组扁平化是指将多维嵌套的数组转换为一维数组。

1. 使用递归

递归是一种常用的数组扁平化方式,它通过遍历数组的每个元素来判断是否为数组,如果是数组,则继续递归处理;如果是非数组元素,则将其添加到结果数组中。

function flattenArray(arr) {
  let result = [];

  arr.forEach(item => {
    if (Array.isArray(item)) {
      result = result.concat(flattenArray(item));
    } else {
      result.push(item);
    }
  });

  return result;
}

2. 使用扩展运算符(...)

function flattenArray(arr) {
  while (arr.some(item => Array.isArray(item))) {
    arr = [].concat(...arr);
  }
  return arr;
}

3. 使用Array.flat方法

Array.flat方法是ES2019引入的新方法,它可以用于将嵌套的数组扁平化为指定的层数。

const arr = [1, [2, [3, [4, 5]]]];

const flatResult = arr.flat(Infinity);

console.log(flatResult); // 输出 [1, 2, 3, 4, 5]

上面的代码中,通过调用arr.flat(Infinity)arr数组扁平化为一维数组。参数Infinity表示递归地扁平化数组,直到没有嵌套数组。默认值为 1

4. 使用Array.reduce方法

Array.reduce方法也可以用于数组的扁平化操作。可以通过将数组逐个展开并追加到累加器中来实现。

function flattenArray(arr) {
  return arr.reduce((accumulator, currentValue) => {
    return accumulator.concat(Array.isArray(currentValue) ? flattenArray(currentValue) : currentValue);
  }, []);
}

leetcode 刷题一道

var flat = function (arr, n) {
    while(n){arr = [].concat(...arr);n--;}
    return arr;
};