在Javascript数组中相互分割数字

在Javascript数组中相互分割数字,javascript,arrays,divide,Javascript,Arrays,Divide,我有一个随机生成的数字数组。 我想创建一个将所有这些数字分开的函数。基本上,假设数组中有5个数字[5,7,6,8,2],我希望输出等于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总计=1; 对于(var i=0;i

我有一个随机生成的数字数组。 我想创建一个将所有这些数字分开的函数。基本上,假设数组中有5个数字[5,7,6,8,2],我希望输出等于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总计=1;
对于(var i=0;i
这是我到目前为止所做的,但是输出不是正确的。知道我哪里做错了吗

试试这个

array = [5, 7, 6, 8, 2];
var total = array[0];
for(var i = 1; i < array.length; i++) {
    total = array[i] / total; 
}
return total;
array=[5,7,6,8,2];
var total=数组[0];
对于(变量i=1;i
试试这个

array = [5, 7, 6, 8, 2];
var total = array[0];
for(var i = 1; i < array.length; i++) {
    total = array[i] / total; 
}
return total;
array=[5,7,6,8,2];
var total=数组[0];
对于(变量i=1;i
试试这个。它使用数组的方法以及es6,这使它成为一个单行程序。您可以使用将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;
});
如您所见,Array.reduce()将值列表缩减为一个值,在列表中循环,应用回调函数并返回一个新列表。在该回调中,您可以访问四个参数:

previousValue:如果在回调函数后传递参数,previousValue将假定该值,否则它将是数组中的第一项

当前值:循环中的当前值

索引:循环中当前项的索引


数组:列表

试试这个。它使用数组的方法以及es6,这使它成为一个单行程序。您可以使用将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;
});
如您所见,Array.reduce()将值列表缩减为一个值,在列表中循环,应用回调函数并返回一个新列表。在该回调中,您可以访问四个参数:

previousValue:如果在回调函数后传递参数,previousValue将假定该值,否则它将是数组中的第一项

当前值:循环中的当前值

索引:循环中当前项的索引


数组:列表

你的数学基本上是倒过来的。在您的方法中,您希望逐步除以总计,而不是逐步除以总计

var total = array[0];
for (var i = 1; i < array.length; i++) 
    total = total / array[i];
return total;
var-total=array[0];
对于(变量i=1;i
你的数学基本上是倒过来的。在您的方法中,您希望逐步除以总计,而不是逐步除以总计

var total = array[0];
for (var i = 1; i < array.length; i++) 
    total = total / array[i];
return total;
var-total=array[0];
对于(变量i=1;i
好吧,你把总数弄糟了,你不停地把每个新数字除以结果。只需翻转“/”运算符即可

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

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=数组[0];
对于(变量i=1;i
好吧,你把总数弄糟了,你不停地把每个新数字除以结果。只需翻转“/”运算符即可

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

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=数组[0];
对于(变量i=1;i
与您的尝试相比,该输出没有意义。应该澄清预期结果。与您的尝试相比,该输出没有意义。应该澄清预期结果。我喜欢这样——这里还有一些OP文档:@RobG-well很多人都回答了这个问题。我只是建议一个简单的替代方案。至于箭头函数,有一些Transpiler,人们可以使用它转换为es5。我已经添加了文档链接以获得更多解释,我喜欢这样——这里还有一些OP文档:@RobG-well很多人已经回答了这个问题。我只是建议一个简单的替代方案。至于箭头函数,有一些Transpiler,人们可以使用它转换为es5。我已经添加了到文档的链接以获得更多解释,除了初始值应该是
array[0]
而不是
1
,根据CollinD的回答;-)除了根据CollinD的回答,初始值应该是数组[0]
而不是
1
。-)我已经试过了,但仍然没有返回正确的结果。这是因为第一个除法是在等于数组[0]的total和数组[0]本身之间进行的。知道如何修复它吗?这段代码从不将
数组[0]
本身分开,因为循环从
i=1
开始。使用您的示例数据,此代码提供了一个正确的输出
0.00744
5/6/7/8/2
)哦,现在我明白了。我没有看到您更改了var I=1。你是对的!它现在起作用了!太棒了,谢谢你!我已经试过了,但仍然没有返回正确的结果。这是因为第一个除法是在等于数组[0]的total和数组[0]本身之间进行的。知道如何修复它吗?这段代码从不将
数组[0]
本身分开,因为循环从
i=1
开始。使用您的示例数据,此代码提供了一个正确的输出
0.00744
5/6/7/8/2
)哦,现在我明白了。我没有看到您更改了var I=1。你是对的!它现在起作用了!太棒了,谢谢你!