当前位置:首页 > 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方法累积处理每个元素,遇到数组元素时递归调用扁平化函数。

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

指定深度的扁平化

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

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已内置数组扁平化方法,可直接调用实现不同深度的扁平化需求。

js flat 实现

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

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

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

标签: jsflat
分享给朋友:

相关文章

js实现动画

js实现动画

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

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…