每个数组值相乘

问题描述 投票:0回答:9

也许很简单,但我想知道将数组值彼此相乘的最佳和最简单方法。

我有一个带有一些值的数组:

const arr = [1, 5, 12, 3, 83, 5];

现在,我想从arr获取所有值的乘积。它应该像这样工作:1 * 5 * 12 * 3 * 83 * 5

我尝试使用此代码:

const arr = [1, 5, 12, 3, 83, 5];

multiply(arr);

function multiply(arr) {
    for(i = 0; i < arr.length; i++) {
        product = array[i] * array[i];
        console.log(product);
    }
}

此代码上面的代码是这样的:1 * 1,5 * 5,12 * 12,3 * 3,83 * 83,5 * 5,这不是我需要的结果。我想我知道为什么会这样,但是我不确定如何编写所需的代码。

那么,这类任务的最佳选择是什么?

javascript arrays multiplying
9个回答
3
投票

只需将console.log移到for主体之外]

const array = [1, 5, 12, 3, 83, 5];
console.log(multiply(array)); // we log function return value
function multiply(array) {
  let score = array[0];
  for (i = 1; i < array.length; i++) {
    score = score * array[i];
  }
  return score;
}

顺便说一句,您可以使用Array.reduce

Array.reduce

1
投票

您可以使用reduce方法将所有数字相乘

const array = [1, 5, 12, 3, 83, 5];

const result = array.reduce((acc, value, index) => {
  if (index === 0) return value;
  acc = acc * value;

  return acc;
}, 0);

console.log(result);

1
投票

已更正您的程序。

const array = [1, 5, 12, 3, 83, 5];
const total = array.reduce((total,num) => total * num, 1);
console.log(total)

0
投票

希望解决方案不言自明。遍历数组。将每个乘积相乘并将结果存储在同一变量中。

    const array = [1, 5, 12, 3, 83, 5];
    multiply(array);
    function multiply(array) {
    	  var score = 1; 
        
        for(i = 0; i < array.length; i++) {
            score = score * array[i];        
        }
        console.log(score);
    }

	

0
投票

const array = [1, 5, 12, 3, 83, 5];
multiply(array);
function multiply(array) {
    let product = 1;
    for(i = 0; i < array.length; i++) {
        product *= array[i];
    }
    console.log(product);
}

0
投票

const array = [1, 5, 12, 3, 83, 5];
multiply(array);
function multiply(array) {
    var score = array[0];
    for(i = 1; i < array.length; i++) {
        score = score * array[i];
    }
    console.log(score);
}

0
投票
var array = [1, 5, 12, 3, 83, 5];

var result = array.reduce(function(a, b) {
  return a * b;
});

console.log(result);

0
投票

用于计算乘法的最终结果:

const array = [1, 5, 12, 3, 83, 5];
multiply(array);
function multiply(array) {
    for(i = 0; i < array.length-1; i++) {
        score = array[i] * array[i+1];
        console.log(score);
    }
}

您是否要求计算的文本表示?如果是这样,请使用此:

    const array = [1, 5, 12, 3, 83, 5];
    multiply(array);
    function multiply(array) {
      score = 1;
      for(i = 0; i < array.length; i++) {
        score = score * array[ i ];
      }
      console.log(score); // expected result: 74700
    }

这应该开始为您提供正确的方法,希望对您有所帮助。


0
投票

[const array = [1, 5, 12, 3, 83, 5]; multiply(array); function multiply(array) { score = ''; for(i = 0; i < array.length; i++) { score += array[i].toString(); if ( i < array.length -1 ) score += '*'; } console.log(score); // expected result: '1*5*12*3*83*5' },您正在尝试乘以精确的比例。

score = array[i] * array[i];

类似:1 * 1、5 * 5

您可以乘以 const array = [1, 5, 12, 3, 83, 5];

另一种方法可能是数组函数。

array[i] * i

有关更多信息: const array = [1, 5, 12, 3, 83, 5]; multiply(array); function multiply(array) { let product = 1; `enter code here`for(i = 0; i < array.length; i++) { product *= array[i]; } console.log(product); } let multiArray = array.map((num, index) => num *index) console.log(multiArray)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.