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

推荐答案

mapfilterreduce 是 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 (可选): 作为第一次调用回调函数时的第一个参数的值,如果没有提供,则使用数组的第一个元素作为初始值,并从数组的第二个元素开始执行回调函数。

示例:

-- -------------------- ---- -------
----- ------ - ---- --- --- ----

-- ---------
----- ---------- - ------------------- ------ -- --- - ------ ---
------------------------ -- ------- ---

-- ---------
----- ------- - --------------------------- ------------- -- ----------- - ------------- ---
-------------------- -- ------- ------

----- ----- - -
  - --- -- ----- -------- --------- - --
  - --- -- ----- --------- --------- - --
  - --- -- ----- --------- --------- - -
--
-- ---------- -- --------
----- ------- - ------------------ ----- -- -
    ------------ - -----
    ------ ----
  -- ----
-------------------- -- ------- --- ---- -- ---- -- ----
纠错
反馈