Javascript计算数组的平均值

时间:2015-08-06 12:33:32

标签: javascript arrays

我有一个长javascript int数组的引用:

var heights = new Array(120, 123, 145, 130, 131, 139, 164, 164, 165, 88, 89);

我必须每次计算三个项目的平均值,包括最后两个数字(88,89)。 如何才能包含这些最后的值(只有两个)?

3 个答案:

答案 0 :(得分:0)

这是计算从索引到索引的给定数组的平均值的方法:

var grades = [1,2,3,4,5,6,7,8,9,0];
var average = calculateAverage(grades,0,9);
console.log(average);

function calculateAverage(arr,start,end){
    var total =0;
  for(var i=start; i<=end; i++){
        total+=arr[i];
  }
  var diff = (end-start)+1;
  var avg = total/diff;
    return avg;
}

答案 1 :(得分:0)

对数组使用 Rest参数 for ... of循环 ...

function average(...nums) {
    let total = 0;
    for(const num of nums) {
    total += num;
    }
    let avr = total / arguments.length;
    return avr;
}

console.log(average(2, 6));
console.log(average(2, 3, 3, 5, 7, 10));
console.log(average(7, 1432, 12, 13, 100));
console.log(average());

问题:无参数-console.log(average()); -返回Null,正确答案必须为0。这里有任何简便的速记方法吗?

答案 2 :(得分:-2)

感谢javascript,你可以完美地做到这一点。

&#13;
&#13;
var heights = new Array(120, 123, 145, 130, 131, 139, 164, 164, 165, 88, 89);

var results = [];
for( var i = 0; i < heights.length; i += 3 ){
  results[results.length] = (heights[i] +  (heights[i+1]||0) + (heights[i+2]||0))/Math.min(3,heights.length-i);
}

alert( results.toString() );
&#13;
&#13;
&#13;

heights[i+1]||0只是意味着如果heights[i+1]不存在,从而返回null,整个事情将等于0(更多信息,只需谷歌 javascript短路运营商。很多人评论说,也许你没有对你的任务进行足够的研究;)