如何使用JavaScript将循环内数组中的所有项目相乘[重复]

Posted

技术标签:

【中文标题】如何使用JavaScript将循环内数组中的所有项目相乘[重复]【英文标题】:How to multiply all items in array inside a loop with JavaScript [duplicate] 【发布时间】:2019-12-03 01:06:43 【问题描述】:

我在函数 (javascript) 中有项目 0 到 N 的动态输入。

在每个位置都有类似items[1,3,4]的值,创建一个循环:

更新:项目或“数组”是动态的,我没有永久值。

例如:for (var i = 0;i < items.length; i++)

需要返回所有项目的乘积,只知道“for”内的数组(items.length)的总和。

所以.. 第一。需要累积

第二个可能在循环中相乘item[value] * item[value] *

第三个可能是if(i == items.length)return total(例如:1*3*4 = 12)

不知道怎么累积 var total = item[value] * item[value] * ...

function **multiplyEach**(item)
  item[1,3,4]; //only ex.:this array have many possibilities of length
  for( var i = 0; i <= item.length; i++)
    var **items** = item[i] * item[i]; 
    if (i == item.length)
      return items;
    
  

项目在 Chrome 浏览器的调试中具有 NaN 或未定义的值。 :/ ..

【问题讨论】:

数组reduce()方法 How to find the sum of an array of numbers 或 Multiply all elements in array 的可能重复 【参考方案1】:

这是Array.prototype.reduce 的一个很好的用例

const product = [1, 3, 4].reduce((product, n) => product * n, 1);

console.log(product);

【讨论】:

但是我有一个动态数组,在这种情况下如何实现.. 这只是一个示例,说明人们将如何实现这样的东西 - 它并不是直接复制并粘贴到您的代码中。您认为应该如何修改此代码以处理“动态”数组?也许创建一个变量来引用数组,然后在该数组上reduce,对吧?【参考方案2】:

我想这就是你想要的......

var items = [1,3,4]; //only ex.:this array have many possibilities of length

var product = 1;
for( var i = 0; i < items.length; i++)
  product *= items[i]; 


// product === 12

【讨论】:

为什么循环里面有一个var? 我进行了修改以修复它,有几处错误。【参考方案3】:

正如@epascarello 建议的那样,您可以使用Array.reduce() 函数来实现:

const multiplyEach = nums => nums.reduce((res, num) => res * num, nums.length ? 1 : 0);

console.log('multiplyEach([1,3,4]) = ', multiplyEach([1,3,4]));
console.log('multiplyEach([]) = ', multiplyEach([]));

【讨论】:

【参考方案4】:

在 Javascript 中有一个数组reduce 函数的示例可供您使用。

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

【讨论】:

【参考方案5】:

正如其他人建议的那样,使用 Array.prototype.reduce 方法。可以在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce找到文档

// This is an example for your use case.
const arr = [1,3,4];
let total = arr.reduce((a, b) => a * b);
console.log(total); // 12

【讨论】:

【参考方案6】:

1 的初始值启动产品。将其存储在单独的变量中。将每个项目与它相乘。在循环之后执行return,而不是在循环内有条件地执行。不要让你的循环运行到item.length,而是item.length-1,这是最后一个索引。

function multiplyEach(items) 
    var product = 1;
    for (var i = 0; i < items.length; i++) 
        product = product * items[i];
    
    return product;

console.log(multiplyEach([1,3,4]));

【讨论】:

【参考方案7】:

通常,当您执行此类操作时,您在 for 循环之外有一些变量,用于跟踪您当前的“累积”值。然后,对于数组中的每个项目,更新您的变量。这是一个简单的例子:

function multiplyEach(items)
    // variable we will use to keep track of the current value
    var acc = 1;
    // now loop through the items
    for( var i = 0; i < items.length; i++ )
        // now we update our variable
        acc = acc * items[i]; 
    
    // now return our value
    return acc;

还有一点需要注意,在您的示例中,您有:

for( var i = 0; i &lt;= item.length; i++)

这将引发错误,因为您迭代的时间太长了。你有“

【讨论】:

是的.. 谢谢.. " 我更新问题 - 因为有一个动态数组 ("

以上是关于如何使用JavaScript将循环内数组中的所有项目相乘[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Vuejs - 如何使用 v-for 获取数组中的所有唯一值(删除重复项)

从javascript中的数组中获取随机X项

如何将c#中的List转换为javascript中的数组并检查数组项

如何将一个对象数组中的所有项目从Javascript动态显示为HTML?

如何将数据循环到laravel刀片javascript中的数组中?

如何从数组中删除随机项,然后将其从数组中删除,直到数组为空