📜  Lodash _.reduce() 方法(1)

📅  最后修改于: 2023-12-03 15:17:26.077000             🧑  作者: Mango

Lodash _.reduce() 方法

Lodash是一个JavaScript实用工具库,提供了众多的方法来简化编程,其中之一就是_.reduce()方法。

简介

_.reduce()方法是Lodash提供的一个高阶函数,它用于遍历一个数组或对象并返回一个累计值。这个累计值是在每次执行回调函数时更新的。回调函数接收两个参数:累计值和当前数组元素(或对象属性值)。

语法
_.reduce(collection, [iteratee=_.identity], [accumulator])

参数解释:

  • collection:一个必需的参数,用于指定要遍历的数组或对象。
  • iteratee:可选参数,用于指定在每次迭代时要执行的函数。该函数接收三个参数:累计值、当前数组元素(或对象属性值)以及当前索引(或键名)。
  • accumulator:可选参数,如果指定了,则代表初始的累计值。
示例

假设我们有一个数组:

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

那么我们可以用_.reduce()方法来计算这个数组的和:

const sum = _.reduce(arr, (sum, num) => sum + num, 0);
console.log(sum); // 15

这个例子中,迭代函数接收两个参数:sum表示当前的累计值,num表示当前数组元素。在每一次迭代中,sum都会加上当前的num,而初始的累计值为0。

下面我们看一个更复杂的例子,假设我们有一个对象数组:

const fruits = [
  { name: 'apple', qty: 10 },
  { name: 'banana', qty: 20 },
  { name: 'orange', qty: 30 }
];

我们可以用_.reduce()方法来计算所有水果的总数量:

const totalQty = _.reduce(fruits, (total, fruit) => total + fruit.qty, 0);
console.log(totalQty); // 60

这个例子中,迭代函数接收两个参数:total表示当前的累计值,fruit表示当前对象元素。在每一次迭代中,total都会加上当前对象元素的qty属性,而初始的累计值为0。

总结

_.reduce()是Lodash提供的一个非常实用的方法,它可以帮助我们快速计算数组或对象的累计值。在使用_.reduce()方法时,我们需要明确传入遍历的数据集(数组或对象),迭代函数以及初始的累计值(可选)。