Я пытаюсь выполнить очевидную задачу:
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 ] ]
А почему это?