我有一组随机生成的数字.我想创建一个分割所有这些数字的函数.基本上,假设我在数组[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;
这是我到目前为止所做的,但输出不正确.知道我做错了吗?
你基本上得到了你的数学.根据您的方法,您希望逐步划分总数,而不是逐步除以总计.
var total = array[0]; for (var i = 1; i < array.length; i++) total = total / array[i]; return total;
尝试这个。它使用数组的reduce方法以及es6 箭头函数,使它成为一个衬里。您可以使用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; });
正如您在docs中看到的那样,Array.reduce()会将值列表减少为一个值,在列表中循环,应用回调函数并返回一个新列表。在该回调中,您可以访问四个参数:
previousValue:如果在回调函数后传递参数,则previousValue将采用该值,否则它将是数组中的第一项。
currentValue:循环中的当前值。
index:循环中当前项目的索引。
数组:列表