将数组中的所有元素相乘

时间:2013-10-04 06:51:50

标签: javascript

我在这里找不到一个我真正想要的例子。 我想将所有数组元素相乘,所以如果数组包含[1,2,3],则总和将为1 * 2 * 3 = 6; 到目前为止,我已经有了这个代码,但它返回undefined。

function multiply (array) {
    var sum=1;
    for (var i=0; i<array.length; i++) {
        sum = sum * array[i];
    } 
    return sum;
}
console.log(multiply[1,2,3]);

有人可以解释一下,我在这里缺少什么?提前致谢!

先生,您忘了添加数组变量! 该函数绘制一个变量,所以:

function multiply (array) {
    var sum = 1;
    for (var i = 0; i < array.length; i++) {
        sum = sum + array[i]:
    }
    return sum;
}
console.log(multiply(array));

7 个答案:

答案 0 :(得分:43)

原因已为人所知。这是另一种选择 - 使用Array.reduce作为您的方法:

[1, 2, 3].reduce( (a,b) => a * b ); //=> 6

See also

答案 1 :(得分:9)

调用该函数时需要()

multiply([1,2,3])

演示 here

答案 2 :(得分:2)

使用Array.reduce的另一种方法应该将初始值设置为1,否则我们的函数无论如何都将返回0。

[1, 2, 3].reduce((a, b)=> a*b, 1)

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

答案 3 :(得分:1)

你不是将乘法调用为函数:

multiply([1,2,3]);

答案 4 :(得分:0)

如果要乘以1,2,3之类的连续数字,则应用此代码并在控制台(arr)中输入数字

let array = [];

function factorisation(arr) {
    for (let j = arr; j > 0; j--) {
        array.push(j);
    }
    return multiply();
}

function multiply() {
    var sum = 1;
    for (var i = 0; i < array.length; i++) {
        sum = sum * array[i];
    }
    return sum;
}

console.log(factorisation(5));
//5*4*3*2*1 = 120

答案 5 :(得分:0)

使用Lodash> = 4.7:

_.reduce(array, _.multiply)

或使用所有三个参数:

_.reduce(array, _.multiply, 1)

答案 6 :(得分:0)

reduce()方法为数组的每个值执行提供的函数,并将数组缩小为单个值

    const arr = [1,2,3];
    const sum = arr.reduce((prevValue,curValue) => {
        return prevValue * curValue
    },1);
    console.log(sum);

prevValue 是初始值,在此示例中等于 1

curValue 是数组中当前元素的值