Nikulio
@Nikulio
NaN !== NaN

Что делает этот код на пальцах?

Всем привет

Не могу до конца понять суть этого кода
function reduce(array, combine, start) {
    var current = start;
    for (var i = 0; i < array.length; i++)
        current = combine(current, array[i]);
    return current;
}

console.log(reduce([1, 2, 3, 4], function(a, b) {
    return a + b;
}, 0));

Объясните, пожалуйста
  • Вопрос задан
  • 206 просмотров
Пригласить эксперта
Ответы на вопрос 2
alsopub
@alsopub
Скорее всего вы непоняли момент с передачей функции в качестве параметра.
Да, в javascript в качестве параметра можно передавать не только числа, строки и массивы, но и функции.
Функция может быть объявлена выше и иметь имя, тогда в качестве параметра передается ее имя (без скобок).
В данном случае функция является анонимной (без имени) и сразу объявляется в том месте, где она передается в виде параметра.
Функция reduce принимает следующие параметры: массив, функция от двух переменных, начальная сумма
combine(current, array[i]) - это вызов переданной в параметрах функции с двумя аргументами.
Ответ написан
Комментировать
Сейчас, суммирует все значения массива со стартовым значением.

function reduce(array, combine, start) {
    var current = start; // записываем стартовое значение в основную переменную
    for (var i = 0; i < array.length; i++) // в цикле...
        current = combine(current, array[i]);  // ... применяем введенную функцию (см функцию combine)
    return current; // выводим значение из функции.
}

console.log(reduce([1, 2, 3, 4], function(a, b) {
    return a + b; // суммируем аргументы (в нашем случае добавляем к уже подсчитанному новое значение)
}, 0));
/* Данная [reduce] функция выполняет применение введенной
 * функции (combine) ко всем значениям массива (array), с учетом
 * стартового значения (start)
*/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 11:53
3000 руб./за проект
22 нояб. 2024, в 11:51
20000 руб./за проект
22 нояб. 2024, в 11:50
200000 руб./за проект