banner
Tenifs

Tenifs

雄关漫道真如铁,而今迈步从头越。
github
follow
zhihu
email

JavaScript 中 ,reduce 函数的用法

reduce() 是 JavaScript 中数组的一个高阶函数,用于将数组中的所有元素通过某种方式汇总成一个单一的值。它的基本用法是通过提供一个回调函数,回调函数接收四个参数:accumulator(累积器)、currentValue(当前值)、currentIndex(当前索引)、array(原数组)。其中,accumulator 用来保存每次迭代的结果,而 currentValue 则是当前迭代项的值。

语法:#

array.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
  • callback: 执行的回调函数,接收四个参数:
    • accumulator: 上一次回调函数返回的值,或者是初始值(initialValue)。
    • currentValue: 当前正在处理的数组元素。
    • index: 当前元素的索引(从 0 开始)。
    • array: 被操作的原数组。
  • initialValue(可选):指定第一次调用回调函数时 accumulator 的初始值。如果没有提供 initialValue,则默认 accumulator 的初始值为数组的第一个元素,currentValue 从数组的第二个元素开始。

示例 1:求数组元素的和#

const numbers = [1, 2, 3, 4, 5];

const sum = numbers.reduce((accumulator, currentValue) => {
  return accumulator + currentValue;
}, 0);  // 0 是初始值

console.log(sum);  // 15

示例 2:数组去重#

const numbers = [1, 2, 3, 4, 3, 2, 1];

const uniqueNumbers = numbers.reduce((accumulator, currentValue) => {
  if (!accumulator.includes(currentValue)) {
    accumulator.push(currentValue);
  }
  return accumulator;
}, []);

console.log(uniqueNumbers);  // [1, 2, 3, 4]

示例 3:计算数组中每个元素的出现次数#

const fruits = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana'];

const fruitCount = fruits.reduce((accumulator, currentValue) => {
  if (accumulator[currentValue]) {
    accumulator[currentValue] += 1;
  } else {
    accumulator[currentValue] = 1;
  }
  return accumulator;
}, {});

console.log(fruitCount);  // { apple: 2, banana: 3, orange: 1 }

示例 4:链式操作#

const numbers = [1, 2, 3, 4];

const result = numbers
  .reduce((acc, currentValue) => acc + currentValue, 0)
  .toString()
  .split('')
  .reverse()
  .join('');

console.log(result);  // "10" (数字 10 被反转成 "01")

总结#

reduce() 是一个非常强大的方法,适用于各种场景,如数组聚合、转换、计数等。它能将复杂的操作简化为一行代码,但要注意初学者可能会觉得它有点抽象。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。