如何使用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 <= item.length; i++)
这将引发错误,因为您迭代的时间太长了。你有“
【讨论】:
是的.. 谢谢.. " 我更新问题 - 因为有一个动态数组 ("以上是关于如何使用JavaScript将循环内数组中的所有项目相乘[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Vuejs - 如何使用 v-for 获取数组中的所有唯一值(删除重复项)
如何将c#中的List转换为javascript中的数组并检查数组项
如何将一个对象数组中的所有项目从Javascript动态显示为HTML?