数组的扁平化

57 阅读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;
}

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

  1. 使用reduce方法:
function flattenArray(arr) {
  return arr.reduce((result, item) => {
    if (Array.isArray(item)) {
      return result.concat(flattenArray(item));
    } else {
      return result.concat(item);
    }
  }, []);
}

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

  1. 使用ES6的展开运算符:
function flattenArray(arr) {
  while (arr.some(item => Array.isArray(item))) {
    arr = [].concat(...arr);
  }

  return arr;
}

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