与标题所示,我需要做的是使用for循环计算数组的平均值。平均而言,我的意思是(a+b+c+d+e)/5=average.
这就是我需要在文本中做的事情,因为我是javascript的新手,我不太清楚如何执行它。有什么想法吗?
此外,如果你认为这个问题不属于这里或者是愚蠢的,请指导我到我能找到这些信息的地方,我只是想在这里学习。
function test(arr) {
}
答案 0 :(得分:5)
function average(items) {
var sum = 0;
var count = items.length;
for (i=0; i<count; i++) {
sum += items[i];
}
return sum/count;
}
或者,如果您希望average()
可用作阵列上的方法:
Array.prototype.average = function() {
var sum = 0;
var count = this.length;
for (i=0; i<count; i++) {
sum += this[i];
}
return sum/count;
}
用法:
[1,2,3,4,5].average(); // 3
答案 1 :(得分:1)
这是一篇回复你答案的帖子。
另请在Javascript中查看有关for循环的链接:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for_each...in
答案 2 :(得分:1)
只需迭代值,总结它们,然后返回sum
的值除以条目数。
function test (arr) {
for (var i=0,sum=0;i<arr.length;i++) {
sum += arr[i];
}
return sum / i;
}
答案 3 :(得分:0)
这应该有帮助
var nCtrr = 0, nSum = 0, nAvg = 0;
var arNum = [1, 2, 3, 4, 5];
for ( nCtr in arNum ) {
nSum += arNum[ nCtr ];
nCtr += 1;
}
nAvg = nSum/arNum.length;
alert( nAvg );
答案 4 :(得分:0)
建议,这里的答案都没有检查长度=== 0,你将来会在某种情况下除以零。我建议你总是检查数学边界条件。相关文章有一个回应(https://stackoverflow.com/a/18234568/987044)。
如果您想要安全,这是另一个例子。 http://jsfiddle.net/ledlogic/syn74/
var nothing = null;
var empty = [];
var items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]; // 20 sider
function average(items) {
if (!items) {
return 0;
}
var sum = 0,
count = 0;
// for large arrays, faster to go down.
for (var count = items.length, i = count - 1; i >= 0; i--) {
sum += items[i];
}
return count ? sum / count : 0;
}
alert(nothing + ":" + average(nothing) + "\r" + empty + ":" + average(empty) + "\r" + items + ":" + average(items) + "\r");