在该reduce方法的末尾添加括号的目的是什么?

时间:2018-12-22 18:09:48

标签: javascript reduce

我正在阅读Eloquent Javascript,我在第5章,高阶函数。最后的问题之一是展平多个数组的数组。 Book解决方案将解决方案作为箭头功能提供,并且在代码行的末尾带有方括号。我想知道为什么他们必须在那里,因为我编写了没有括号的相同代码,并且返回了相同的值。我只是想知道为什么我们要使用方括号,以便我可以更好地理解reduce方法,并且将来不会搞乱任何东西。这是两个版本,它们都可以工作。

我浏览了各种论坛,Stack,MDN,w3找不到解释。

var arrays = [[1,2,3],[4,5],[6,7],[8,9]];

console.log(arrays.reduce(function(a, b) { return a.concat(b)},[]));
// Brackets----------------------------------------------------^^^
console.log(arrays.reduce(function(a, b) { return a.concat(b)}));
// No Brackets-----------------------------------------------^^^

//result = [1, 2, 3, 4, 5, 6, 7, 8, 9]

因此,两者的结果是相同的,但是我知道这些括号必须在这里,我想知道它们的目的和目的是什么。在此先感谢!

1 个答案:

答案 0 :(得分:2)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

initialValue:

用作回调的第一次调用的第一个参数的值。如果未提供初始值,则将使用数组中的第一个元素。在没有初始值的空数组上调用reduce()是错误的。

与initialValue有关的示例:

var fruit = ['apple', 'banana', 'banana', 'apple', 'banana', 'apple', 'apple', 'apple'];

console.log(fruit.reduce(function(a, b) { a[b]++; return a; },{apple: 0, banana: 0}));
// { apple: 5, banana: 3 }

console.log(fruit.reduce(function(a, b) { a[b]++; return a; }));
// apple

因此,在这种情况下,如果我给出一个不错的初始值,我就会得到我想要的-每种水果的数量。这里不给出初始值只是使代码随机吐出苹果这个词。