当前位置:首页 > JavaScript

js实现flatmap

2026-02-01 13:18:04JavaScript

实现 flatMap 的方法

在 JavaScript 中,flatMap 是一种结合了 mapflat 功能的高阶函数。它会先对数组的每个元素执行映射操作,然后将结果“扁平化”一层。以下是几种实现方式:

使用 Array.prototype.flatMap(原生方法)

现代 JavaScript 引擎(ES2019 及以后)原生支持 flatMap

js实现flatmap

const arr = [1, 2, 3];
const result = arr.flatMap(x => [x * 2]); // [2, 4, 6]

手动实现 flatMap

如果环境不支持原生 flatMap,可以通过组合 mapflat 实现:

js实现flatmap

function flatMap(arr, callback) {
  return arr.map(callback).flat();
}

// 示例
const arr = [1, 2, 3];
const result = flatMap(arr, x => [x, x * 2]); // [1, 2, 2, 4, 3, 6]

不依赖 flat 的 polyfill 实现

通过 reduce 直接实现扁平化逻辑:

function flatMap(arr, callback) {
  return arr.reduce((acc, item) => acc.concat(callback(item)), []);
}

// 示例
const arr = [[1], [2, 3], [4]];
const result = flatMap(arr, x => x.map(v => v * 2)); // [2, 4, 6, 8]

支持深度扁平化的扩展实现

如果需要自定义扁平化深度,可以扩展实现:

function flatMap(arr, callback, depth = 1) {
  return arr.map(callback).flat(depth);
}

// 示例
const arr = [1, [2, [3]]];
const result = flatMap(arr, x => [x], 2); // [1, 2, 3]

注意事项

  • 原生 flatMap 只能扁平化一层,多层级需要配合 flat 使用。
  • polyfill 实现时注意 callback 应返回数组,否则需要额外处理。
  • 性能敏感场景建议测试不同实现的效率。

标签: jsflatmap
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…