任何人都可以解释这个JavaScript代码中发生的事情吗?我不理解i.reduce
以[]
作为初始值传递的部分:
function longestString(i) {
// It will be an array like (['big',[0,1,2,3,4],'tiny'])
// and the function should return the longest string in the array
// This should flatten an array of arrays
var r = i.reduce(function(a, b) {
return a.concat(b);
}, []);
// This should fetch the longest in the flattened array
return r.reduce(function (a, b)
{
return a.length > b.length ? a : b;
});
}
答案 0 :(得分:2)
reduce中的初始值是累加器。例如,如果i是[[1],[2],[3]]
,则reduce语句等同于:
r = [];
r = r.concat([1]);
r = r.concat([2]);
r = r.concat([3]);
在reduce的每个步骤中,必须在两个参数上调用该函数。在第一步中必须有一些初始值。你什么都不能调用.concat所以你从一个空数组开始。