当前位置:首页 > JavaScript

js实现flatten

2026-03-14 22:37:43JavaScript

实现数组扁平化的方法

使用递归方法

递归是最直观的实现方式,通过遍历数组元素,遇到子数组时递归调用自身。

function flatten(arr) {
  let result = [];
  arr.forEach(item => {
    if (Array.isArray(item)) {
      result = result.concat(flatten(item));
    } else {
      result.push(item);
    }
  });
  return result;
}

使用reduce方法

reduce方法可以更简洁地实现扁平化,结合递归处理嵌套数组。

function flatten(arr) {
  return arr.reduce((acc, val) => 
    acc.concat(Array.isArray(val) ? flatten(val) : val), []);
}

使用ES6的flat方法

现代JavaScript提供了原生扁平化方法,可以指定扁平化深度。

// 完全扁平化
const flattened = arr.flat(Infinity); 

// 指定扁平化层级
const flattenedLevel1 = arr.flat(1);

使用扩展运算符

对于浅层扁平化(一层),可以使用扩展运算符结合concat。

function flattenOneLevel(arr) {
  return [].concat(...arr);
}

使用Generator函数

对于大型数组,可以使用生成器实现惰性求值。

function* flattenGenerator(arr) {
  for (const item of arr) {
    if (Array.isArray(item)) {
      yield* flattenGenerator(item);
    } else {
      yield item;
    }
  }
}

const flattened = [...flattenGenerator(nestedArray)];

性能考虑

对于大型深层嵌套数组,递归方法可能导致堆栈溢出。这时可以使用迭代方法:

js实现flatten

function flattenIterative(arr) {
  const stack = [...arr];
  const result = [];
  while (stack.length) {
    const next = stack.pop();
    if (Array.isArray(next)) {
      stack.push(...next);
    } else {
      result.push(next);
    }
  }
  return result.reverse();
}

每种方法各有优缺点,递归方法代码简洁但可能堆栈溢出,迭代方法更安全但代码稍复杂,原生flat方法最简洁但需要考虑浏览器兼容性。

标签: jsflatten
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…