gpt4 book ai didi

javascript - 为什么reduce的回调函数需要四个参数?

转载 作者:行者123 更新时间:2023-11-30 12:20:09 24 4
gpt4 key购买 nike

在研究reduce方法的时候不太明白为什么传入的callback需要第三个和第四个参数,index和array。在 MDN 的示例中:

[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array) {
return previousValue + currentValue;
});

我研究过的数组 reduce 方法或下划线 reduce 函数的许多其他用途仅使用 callback 的前两个参数:previousValue(有时被视为 accumulator) 和 currentValue(又名 elem,当前索引的值)。

为什么reduce有时写成callback带四个参数,有时只写previousValuecurrentValue

什么情况下需要indexarray 参数?

在 reduce 的应用程序需要第三个或第四个参数的情况下,是否应该始终在 reduce 的函数定义中给出所有四个参数?

最佳答案

这是一个(稍微)不那么做作的示例,用于总结数组中的唯一值,跳过重复项,使用 indexarray 参数来查找唯一值:

[0, 1, 2, 3, 2, 1, 0].reduce(function(previousValue, currentValue, index, array) {
return array.indexOf(currentValue) === index ? // value used already?
previousValue + currentValue : // not used yet, add to sum
previousValue; // used already, skip currentValue
}); // == 6 ( 0+1+2+3 )

现场演示:http://pagedemos.com/fn764n659ama/1/

旁注:[].reduce() 在 V8 中通过将所有四个参数指定为回调的形式参数来运行得更快,无论它们是否被函数内部的代码使用。

关于javascript - 为什么reduce的回调函数需要四个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31375722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com