javascript - 有人可以解释为什么 reduce 函数安慰了以下数字

标签 javascript reduce

我是 Javascript 的新手,今天正在学习 reduce 函数并浏览 Mozzila Developer 中的示例,我稍微修改了一个,它给了我一个我无法理解的结果(因为我是新手)。有人可以在这里解释结果及其背后的“规则”吗?谢谢

var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(accumulator, currentValue) {
  return accumulator + currentValue
});

console.log(flattened)

答案:0、12、34、5

最佳答案

因为你没有传递初始值作为累加器,这里的初始值是数组[0, 1]。在每次迭代中,操作 accumulator + currentValue 被执行并用作下一次迭代的新累加器(或者,作为 .reduce 的整个返回值,如果最后一次迭代)。

在第一次迭代中,[0, 1] + [2, 3] 产生 “0,12,3”。这是因为当非数字与+一起使用时,它们首先被转换为基元,而当数组被转换为基元时,每一项由逗号连接。所以

[0, 1] + [2, 3]
// evaluates to
'0,1' + '2,3'
// evaluates to
'0,12,3'

在下一次迭代中:

'0,12,3' + [4, 5]
// evaluates to
'0,12,3' + '4,5'
// evaluates to
'0,12,34,5'

这是最后一次迭代,所以最终结果是'0,12,34,5'

请注意,没有空格 - 数组项由逗号连接,而不是由逗号和空格连接。

关于javascript - 有人可以解释为什么 reduce 函数安慰了以下数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58038226/

相关文章:

python直方图单线

javascript - AngularJS orderby 通过复选框过滤

javascript - 单击外部 div 以关闭 div

javascript - 从移动目录获取图片比例

javascript - Vuex commit 不触发 v-show

python - 我想用一个包含 python 中的 longs 和 ints 的列表来调用 reduce

javascript - 使用streams().reduce 从ArrayList<Integer> 构建一个字符串?

javascript - 无法使用 RxJS 中的计时器完成比赛

javascript - 如何在 Javascript 中获取一个数组的任何元素在另一个数组中出现的次数?

Javascript 将平面数据转换为嵌套对象