Требуется initialValue
, чтобы применить начальный возврат к некоторому значению.
acc
- это Целое число (которое начинается с 0
) cur
- это Объект , из которого мы уменьшить его x
значение свойства - Поэтому используйте второй initialValue параметр
.reduce( maxCallback, 0 )
- Назначить как
acc = Math.max( acc, cur.x )
- Неявно вернуть
, acc)
let maxCallback = ( acc, cur ) => (acc = Math.max( acc, cur.x ), acc);
// reduce with initialValue
const a = [ { x: 2 }, { x: 22 }, { x: 42 } ].reduce( maxCallback, Number.MIN_SAFE_INTEGER ); // 42
const b = [ { x: 2 }, { x: 22 } ].reduce( maxCallback, Number.MIN_SAFE_INTEGER ); // 22
console.log(a, b)
initialValue необязательно и полезно - но если вы не уменьшите два разных типа как объект в номер - но номер в номер как:
let maxCallback = ( acc, cur ) => (acc = Math.max( acc, cur ), acc);
// reduce without initialValue
const a = [ 2, 22, 42 ].reduce( maxCallback ); // 42
const b = [ 2, 22 ].reduce( maxCallback ); // 22
console.log(a, b)