我正在阅读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]
因此,两者的结果是相同的,但是我知道这些括号必须在这里,我想知道它们的目的和目的是什么。在此先感谢!
答案 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
因此,在这种情况下,如果我给出一个不错的初始值,我就会得到我想要的-每种水果的数量。这里不给出初始值只是使代码随机吐出苹果这个词。