我正在努力学习如何在这里使用 reduce,这将只记录 b,c,d
['a', 'b', 'c', 'd'].reduce(function(acc, cur){
console.log(cur);
return cur;
})
我也不明白累加器是什么。即使阅读了文档,我也不知道这是如何工作的。
Current
似乎不是 current
,因为 'a'
被跳过。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
编辑:这是一组更好的测试用例:
最佳答案
reduce
的要点在于它依次从数组中取出每个元素,对该元素和前一次迭代的输出(“累加器”)执行二元运算,然后重复直到输入数组耗尽的过程。
也就是说,给定 [a, b, c, d].reduce(f)
它会:
f(a, b)
-> f(f(a, b), c)
-> f(f(f(a, b), c), d)
您只记录了第二个参数,因此您的 a
永远不会出现。
(为方便起见,我忽略了传递给 f
的额外 index
和 array
参数)
如果您想使用数组中第一个元素以外的其他元素作为第一个左手操作数,则使用您未提供的可选“初始值”参数。如果您不提供它,那么,正如您所发现的,acc
和 cur
的第一个值将是 "a"
和 “b”
reduceRight
函数从数组的另一端获取参数:
f(c, d)
-> f(b, f(c, d))
-> f(a, f(b, f(c, d)))
关于javascript - 为什么 reduce 不打印第一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43479220/