任何人都可以解释减少javascripts中的功能

时间:2013-10-13 04:21:30

标签: javascript

任何人都可以解释这个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; 
    });
}

1 个答案:

答案 0 :(得分:2)

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

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

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