顺序乘以数组编号

Multiplying array numbers sequentially

顺序乘数组数的最好和最简单的方法

我有一个包含一些值的数组:

    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,这不是我需要的结果。我想我知道为什么它会这样工作,但我不确定如何编写我需要的代码。

那么,执行此类任务的最佳选择是什么?

编辑。 对于以后看这里的没有经验的人,这是我们找到的最佳选择:

Leo Martin 回答:

    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;
    }

还有更短的版本:

By the way, you could use Array.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);

只需将 console.log 移到 for 之外 body:

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:

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

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

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

已更正您的程序。

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

 

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

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

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

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

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

console.log(result);

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

    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
    }

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

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'
    }

这应该会让您走上正确的道路,希望对您有所帮助。

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

score = array[i] * array[i]; 您正在尝试乘以精确的 exp-rations。

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

类似:1*1、5*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)

了解更多信息:https://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/Global_Objects/Array/map