在 Javascript 数组中将数字彼此相除

Dividing numbers between each other in a Javascript array

我有一组随机生成的数字。 我想创建一个除所有这些数字的函数。基本上,假设数组 [5, 7, 6, 8, 2] 中有 5 个数字,我希望输出等于 5 / 7 / 6 /8 / 2

array = [5, 7, 6, 8, 2];

var total = 1;    
for(var i = 0; i < array.length; i++) {
total = array[i] / total; 
}

return total;

这是我目前所做的,但输出不正确。知道我哪里做错了吗?

试试这个...

array = [5, 7, 6, 8, 2];
var total = array[0];
for(var i = 1; i < array.length; i++) {
    total = array[i] / total; 
}
return total;

试试这个。它使用数组的 reduce method along with es6 arrow functions which makes it a one liner. You can use babel 将 es6 语法转换为 es5.

var arr = [5, 7, 6, 8, 2];

arr.reduce((prev,curr) => prev/curr);

ES5 版本:

var arr = [5, 7, 6, 8, 2];

arr.reduce(function(prev, curr) {
  return prev/curr;
});

如您所见in the docs,Array.reduce() 会将值列表减少为一个值,循环遍历列表,应用回调函数并将return一个新的列表。在该回调中,您可以访问四个参数:

previousValue: 如果你在回调函数后传递一个参数,previousValue 将采用该值,否则它将是数组中的第一项。

currentValue:循环中的当前值。

index: 循环中当前项目的索引。

数组:列表

你的数学基本上倒退了。使用您的方法,您希望逐步除以总数,而不是逐步除以总数。

var total = array[0];
for (var i = 1; i < array.length; i++) 
    total = total / array[i];
return total;

好吧,你搞砸了总数,你一直用每个新数字除以结果。您只需翻转“/”运算符即可。

array = [5, 7, 6, 8, 2];

var total = array[0];    
for(var i = 1; i < array.length; i++) {
total = total/array[i]; 
}

return total;