-2

谁能解释这段 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; 
    });
}
4

1 回答 1

2

reduce 的初始值是一个累加器。例如,如果 i 是[[1],[2],[3]],则 reduce 语句等效于:

r = [];
r = r.concat([1]);
r = r.concat([2]);
r = r.concat([3]);

在 reduce 的每一步中,必须在两个参数上调用该函数。第一步必须有一些初始值。你不能调用 .concat ,所以你从一个空数组开始。

于 2013-10-13T04:31:24.633 回答