javascript - 为什么 reduce 不打印第一个值?

标签 javascript

我正在努力学习如何在这里使用 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

编辑:这是一组更好的测试用例:

enter image description here

最佳答案

reduce 的要点在于它依次从数组中取出每个元素,对该元素和前一次迭代的输出(“累加器”)执行二元运算,然后重复直到输入数组耗尽的过程。

也就是说,给定 [a, b, c, d].reduce(f) 它会:

   f(a, b)
-> f(f(a, b), c)
-> f(f(f(a, b), c), d)

您只记录了第二个参数,因此您的 a 永远不会出现。

(为方便起见,我忽略了传递给 f 的额外 indexarray 参数)

如果您想使用数组中第一个元素以外的其他元素作为第一个左手操作数,则使用您未提供的可选“初始值”参数。如果您不提供它,那么,正如您所发现的,acccur 的第一个值将是 "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/

相关文章:

javascript - jQuery.find().each(fn) 在 Firefox 中不起作用

javascript - ScrollTop 转到错误的顶部

javascript - 在javascript中使用html有麻烦吗?

javascript - 如何使用 javascript/jquery 从本地文件夹自动加载多个图像?

javascript - FileReader onload 不在 Controller 范围内 Angular 2

javascript - 让按钮切换 div 的类

php - 用户点击时如何处理facebook授权 "dont allow"

javascript - 如何循环访问对象属性?

javascript - 在页面上运行 JavaScript 代码而不显示浏览器窗口

javascript - ; [HPM] 尝试代理请求时发生错误