📅  最后修改于: 2023-12-03 15:17:26.077000             🧑  作者: Mango
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()
方法时,我们需要明确传入遍历的数据集(数组或对象),迭代函数以及初始的累计值(可选)。