当前位置:首页 > JavaScript

js flat 实现

2026-03-14 16:43:56JavaScript

实现数组扁平化的方法

使用递归方法遍历数组,将嵌套数组展开为一维数组。递归检查每个元素是否为数组,如果是则继续展开,否则将元素加入结果数组。

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

使用reduce实现扁平化

利用数组的reduce方法累积处理每个元素,遇到数组元素时递归调用扁平化函数。

js flat 实现

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

指定深度的扁平化

通过depth参数控制扁平化层级,只展开指定层级的嵌套数组。

js flat 实现

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

使用堆栈的非递归实现

采用堆栈数据结构实现非递归的扁平化算法,避免递归可能导致的调用栈溢出问题。

function flatten(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();
}

ES2019原生flat方法

现代JavaScript已内置数组扁平化方法,可直接调用实现不同深度的扁平化需求。

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

// 扁平化一层
const flattened = arr.flat();

// 扁平化两层
const flattened = arr.flat(2);

标签: jsflat
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现延迟

js实现延迟

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

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…