Сложить элементы в массиве JavaScript?
Я не понимаю, здесь подразумевалось что можно править код функции или ее нужно вызвать как-то хитро? К тому же у нее нет return. Как с ней обращаться?
- Вопрос задан более трёх лет назад
- 7532 просмотра
Комментировать
Решения вопроса 1
Frontend Developer
Надо хитрым образом подсчитать, а на счет правки, скорее всего это ошибка автора данного сайта
var list = [1, 2, 3, 4, 5, 6]; function sum() < var sum = 0; for (i=0; ireturn sum > sum.apply(null, list) // output => 21
Ответ написан более трёх лет назад
Метод reduce
Метод reduce сворачивает массив к одному значению (редуцирует). К примеру, с помощью этого метода можно легко найти сумму элементов массива (то есть массив сведется к одному значению — к сумме элементов).
Первым параметром метод reduce получает функцию, которая последовательно выполнится для каждого элемента массива, начиная с первого. В эту функцию можно передавать 4 параметра. Если эти параметры есть (они не обязательны), то в первый автоматически попадет , во второй попадет элемент массива, в третий — его номер в массиве (индекс), а в четвертый — сам массив.
Промежуточный результат — это переменная, в которой будет накапливаться то значение, которое вернет метод reduce , когда переберет все элементы массива. К примеру, туда последовательно можно накапливать сумму элементов массива: сначала положить первый элемент, при следующем проходе цикла уже сумму первого элемента и второго, при следующем проходе — сумму первого, второго и третьего. И так, пока массив не закончится. Функция, которую принимает reduce , должна возвращать новое значение промежуточного результата.
Вторым параметром метода reduce указывается начальное значение промежуточного результата. Если его не указать, то оно будет равно первому элементу массива, а обработка элементов начнется со второго элемента.
Синтаксис
массив.reduce(function(промежуточный результат, элемент, индекс, массив) < return новый промежуточный результат; >, начальное значение);
Пример
Найдем сумму элементов массива:
let arr = [1, 2, 3, 4, 5, 6]; let res = arr.reduce(function(sum, elem) < return sum + elem; >, 0); console.log(res);
Результат выполнения кода:
Пример
Давайте найдем сумму всех положительных чисел массива:
let arr = [1, -2, -3, 4, 5, -6]; let res = arr.reduce(function(sum, elem) < if (elem >= 0) < return sum + elem; >else < return sum; >>); console.log(res);
Результат выполнения кода:
Смотрите также
- метод reduceRight ,
выполняющий похожую операцию - метод filter ,
который позволяет фильтровать элементы массива - методы map и forEach ,
которые позволяют применить функцию к каждому элементу массива - методы some и every ,
выполняющие проверку массива