JavaScript 面试题
目录

请解释 map、filter 和 reduce 三个高阶函数的作用,并举例说明它们的用法。

· 约 6 分钟读完 · 第 51 / 507 章

推荐答案

map、filter 和 reduce 是 JavaScript 数组中常用的高阶函数,它们允许你以声明式的方式处理数组数据,避免了传统的命令式循环,使代码更加简洁易读。

  • map(): 对数组中的每个元素执行提供的函数,并返回一个新数组,新数组中的元素是原数组元素经过函数处理后的结果。原数组不会被修改。
  • filter(): 创建一个新数组,新数组包含原数组中所有通过所提供函数实现的测试的元素。也就是说,它会根据条件过滤原数组,只保留符合条件的元素。原数组不会被修改。
  • reduce(): 对数组中的每个元素执行一个reducer函数(您提供的),将其结果汇总为单个返回值。reducer 函数的返回值在每次调用中被累积,并最终返回累积的结果。常用于求和、求积、构建对象等操作。原数组不会被修改。

示例:

本题详细解读

map() 函数详解

map() 方法接收一个回调函数作为参数,该回调函数会被应用于数组的每一个元素。map() 方法的返回值是一个全新的数组,其长度和原数组相同,新数组的每一个元素都是回调函数的返回值。

语法:

  • currentValue:当前正在处理的数组元素。
  • index (可选):当前正在处理的数组元素的索引。
  • arr (可选):调用 map 的原数组。
  • thisValue (可选):执行回调函数时用作 this 的值。

示例:

filter() 函数详解

filter() 方法接收一个回调函数作为参数,该回调函数会被应用于数组的每一个元素。filter() 方法返回一个新数组,新数组只包含原数组中回调函数返回 true 的元素。

语法:

  • currentValue:当前正在处理的数组元素。
  • index (可选):当前正在处理的数组元素的索引。
  • arr (可选):调用 filter 的原数组。
  • thisValue (可选):执行回调函数时用作 this 的值。

示例:

reduce() 函数详解

reduce() 方法接收一个回调函数(reducer)和一个初始值作为参数,回调函数会被应用于数组的每一个元素,并最终返回一个累积的结果。reduce() 方法常用于将数组中的元素进行聚合,例如求和、求积、构建对象等等。

语法:

  • accumulator: 累加器,它会接收上一次回调函数的返回值或者初始值(在第一次执行时)。
  • currentValue: 当前正在处理的数组元素。
  • currentIndex (可选): 当前正在处理的数组元素的索引。
  • arr (可选): 调用 reduce 的原数组。
  • initialValue (可选): 作为第一次调用回调函数时的第一个参数的值,如果没有提供,则使用数组的第一个元素作为初始值,并从数组的第二个元素开始执行回调函数。

示例: