Я пытаюсь выполнить очевидную задачу:
var maxVal = [ 1, 2, 3, 4, 5 ].reduce( Math.max, 0 );
и в результате получаю:
NaN
. Чтобы это работало, мне нужно сделать анонимную функцию следующим образом:
var maxVal = [ 1, 2, 3, 4, 5 ].reduce( function ( a, b ) {
return Math.max(a, b);
}, 0 );
Кто-нибудь может сказать мне , почему ? Обе функции принимают два аргумента и обе возвращают одно значение. В чем разница?
Другой пример может быть таким:
var newList = [[1, 2, 3], [4, 5, 6]].reduce( Array.concat, [] );
Результат:
[1, 2, 3, 0, #1=[1, 2, 3], #2=[4, 5, 6], 4, 5, 6, 1, #1#, #2#]
Я могу запустить этот пример в node.js только в этой форме (у массива нет concat в node.js v4.12, который Я использую сейчас):
var newList = [[1, 2, 3], [4, 5, 6]].reduce( [].concat, [] );
, а потом получаю это:
[ {}, {}, 1, 2, 3, 0, [ 1, 2, 3 ], [ 4, 5, 6 ], 4, 5, 6, 1, [ 1, 2, 3 ], [ 4, 5, 6 ] ]
И почему это?