简体   繁体   English

Javascript计算数组的平均值

[英]Javascript calculate average values of an array

I have a quote long javascript int array such:我有一个引用很长的 javascript int 数组,例如:

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

I have to calculate the average value three items per time, including the last two numers (88, 89).我必须每次计算三个项目的平均值,包括最后两个数字(88、89)。 How can I do a correct loop in order to incluse these last values (which are only two) ?我怎样才能做一个正确的循环以包含这些最后的值(只有两个)?

This is the way to calculate an average for given array from index to index:这是计算给定数组从索引到索引的平均值的方法:

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;
}

Using Rest parameter and for...of loop for an array...对数组使用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());

Problem: for no arguments - console.log(average());问题:没有参数 - console.log(average()); - Returns Null where the correct answer must be 0. Any good shorthand solution here? - 在正确答案必须为 0 的地方返回 Null。这里有什么好的速记解决方案吗?

Thanks to javascript you can perfectly do something like this.多亏了 javascript,你可以完美地做这样的事情。

 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() );

heights[i+1]||0 simply means that if heights[i+1] doesn't exist, thus returns null , the whole thing will be equal to 0 (for more information, just google javascript short circuit operators . As many people commented, maybe you didn't do enough research on your task ;) heights[i+1]||0只是意味着如果heights[i+1]不存在,因此返回null ,整个事情将等于 0 (有关更多信息,只是谷歌javascript 短路操作符。尽可能多人们评论说,也许你没有对你的任务做足够的研究;)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM