Что делает дополнительный параметр 0 в JS? - PullRequest
0 голосов
/ 14 марта 2019

Рассмотрим этот код:

let reduced = inventors.reduce((a, b) => {      
      return (b.passed - b.year) + a;
}, 0);

Я не понимаю, что означает этот дополнительный 0.Сначала я подумал, что это похоже на установку значений по умолчанию, например:

let reduced = inventors.reduce((a = 0, b) => {      
      return (b.passed - b.year) + a;
}); 

Но это не сработало.Разница в том, что первый массив кода был успешно уменьшен.Секунды вернули какую-то странную каскадную строку.

PS Это массив, который я сокращаю (получая сумму продолжительности жизни всех изобретателей в списке):

const inventors = [
      { first: 'Albert', last: 'Einstein', year: 1879, passed: 1955 },
      { first: 'Isaac', last: 'Newton', year: 1643, passed: 1727 },
      { first: 'Galileo', last: 'Galilei', year: 1564, passed: 1642 },
      { first: 'Marie', last: 'Curie', year: 1867, passed: 1934 },
      { first: 'Johannes', last: 'Kepler', year: 1571, passed: 1630 },
      { first: 'Nicolaus', last: 'Copernicus', year: 1473, passed: 1543 },
      { first: 'Max', last: 'Planck', year: 1858, passed: 1947 },
      { first: 'Katherine', last: 'Blodgett', year: 1898, passed: 1979 },
      { first: 'Ada', last: 'Lovelace', year: 1815, passed: 1852 },
      { first: 'Sarah E.', last: 'Goode', year: 1855, passed: 1905 },
      { first: 'Lise', last: 'Meitner', year: 1878, passed: 1968 },
      { first: 'Hanna', last: 'Hammarström', year: 1829, passed: 1909 }
    ];

Итак, можеткто-нибудь, пожалуйста, объясните мне, что делает этот 0?

Ответы [ 3 ]

1 голос
/ 14 марта 2019
arr.reduce(callback[, initialValue])

Это рассматривается как начальное значение

Если вы не используете, первый элемент массива считается как начальное значение

Уменьшение -> Начальное значениепараметр

0 голосов
/ 14 марта 2019

0 в этом случае представляет собой то, что называется аккумулятором . Вы можете гуглить и найти на MDN подробное описание.

По сути, сокращение делает функцию в качестве первого аргумента, а накопитель - вторым, и она объединяет оба значения для получения нового значения.

Если вы не передадите аккумулятор, первый элемент в массиве будет установлен по умолчанию.

0 голосов
/ 14 марта 2019
arr.reduce(callback[, initialValue])

initialValue Необязательно

Значение, используемое в качестве первого аргумента для первого вызова обратного вызова. Если начальное значение не указано, будет использован первый элемент в массиве. Вызов метода Reduce () для пустого массива без начального значения является ошибкой.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...