Я создаю функцию, которая берет массив чисел и умножает их, но я не нашел работоспособного решения.
Это то, что я получил до сих пор:
var total = 0;
var producto = [1,4,7];
function productoria(){
for (var f=0;f<producto.lenght;f++){
if(producto[f]!=0){
total = total + (producto[f]*total);
}
}return total;
}
console.log(productoria());
Использование
reduce()
очень короткое:Документация MDN с примерами здесь . В основном сокращение будет работать следующим образом:
Где
acumulador
хранятся значения, которые мы хотим сохранить, когда мы хотим их сохранить.valorInicial
, если не указано, принимает первое значение массива (в данном примере: 1) . В случае умножения, на каждой итерации мы умножаемacumulador
значение каждого элемента, это будет работать какtotal
переменная вопроса. Пример без использования функции стрелки и с использованиемreturn
, будет:Функция стрелки позволяет нам опускать
return
и{}
. В этом случае конечным значением является одно число, но мы могли бы определить объект или массив в качестве начального значения и работать сacumulador
ним так же, как с объектом или массивом.У вас 3 ошибки:
length
total
до 1Это было бы так:
Производитель — это умножение всех элементов массива, поэтому суммировать не нужно, тогда результат умножается на 1.
Другой способ получить производителя массива — использовать рекурсивный метод:
Такой код намного проще.
Надеюсь, я внес свой вклад в решение проблемы, приветствую.
Если вы не хотите умножать на число 0, я оставляю вам решение:
используйте
filter
, потому что в своем вопросе вы ставите условие if, что ни одно число не равно 0 ->if(producto[f]!=0){
пусть myArray = [1, 2, 5, 77, 99, 7, 6, 9]
пусть умножение = myArray.reduce((a, b)=> a * b) console.log(умножение)