繁体   English   中英

将数组中的所有元素相乘

[英]Multiply all elements in array

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

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]);

谁能解释一下,我在这里错过了什么?

原因已经知道。 这是另一种选择 - 为您的方法使用Array.reduce

 console.log( [1, 2, 3].reduce( (a, b) => a * b ) ); console.log( Array.from( {length: 20} ) .map( (v, i) => i + 1 ) .reduce( (a,b) => a * b ) .toLocaleString()); // for empty arrays, use some initial value const arr = []; if (arr.reduce( (a, b) => a * b, -1 ) === -1) { console.error(`The given array ${arr} is empty`); }

也可以看看

使用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

调用函数时需要有()

multiply([1,2,3])

演示在这里

您没有将 multiply 作为函数调用:

multiply([1,2,3]);

这是对数组进行任何算术运算的最简单方法

 myMathArray = [1,2,3,4,5] let myValue = myMathArray.reduce((a,b)=> a*b) console.log(myValue)

如果您想将一些连续的数字相乘,例如 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

使用Lodash >=4.7:

_.reduce(array, _.multiply)

或者,使用所有三个参数:

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

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

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

prevValue是初始值,在这个例子中它等于1

curValue是数组中当前元素的值

这可以使用递归来简化......

    function productOfArray(arr) {

    let sum = 1;
    
    function sumHelper(nums) {

        if(nums.length === 0)
        return 0;

        sum = sum * nums[nums.length-1];
        nums.length--;
        
        sumHelper(nums);
        
    }

    sumHelper(arr);
    
    return sum;
    
}

console.log(productOfArray([1,2,3])); 

如果你想使用递归

 const productOfArray = (arr) => { if (arr.length === 0) { return 1; } return arr[0] * productOfArray(arr.slice(1)); } console.log(productOfArray([1,2,3,10])); // 60

将所有元素数组相乘,使用以下示例:

常量 arr=[1,2,3,2]

使用减少();

const multiply=arr.reduce((preValue,nextValue)=>preValue *nextValue )

console.log(乘)//12

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM