-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 の各ステップで、関数を 2 つの引数で呼び出す必要があります。最初のステップでは、何らかの初期値が必要です。.concat を何も呼び出すことはできないため、空の配列から始めます。

于 2013-10-13T04:31:24.633 に答える