求平均数
2017-03-01 本文已影响0人
嘿喵heyMeow
题目:求给定一组数的平均数,要求去掉一个最大值,去掉一个最小值,再求平均值。
- 类数组转化为数组:
把arguments这个类数组里的实参复制到一个空数组里,再对空数组排序,去掉最小值(排序后的第一个值)和最大值(排序后的最后一个值),最后通过“+”讲数组转化成字符串再用eval将其执行。
function avgFn(){
var arr=[];
for(var i=0; i<arguments.length; i++){
arr.push(arguments[i]);
}
arr.sort(function(a,b){
return a-b;
});
arr.shift();
arr.pop();
return (eval(arr.join("+"))/arr.length).toFixed(2);
}
- 类数组借用数组的方法:
类数组不是数组,所以不能直接用数组上的方法sort.....等,所以可用call方法借用数组的方法,其余思路和上面一样。
function avgFn(){
[].sort.call(arguments,function(a,b){
return a-b;
});
[].shift.call(arguments);
[].pop.call(arguments);
return (eval([].join.call(arguments,"+"))/arguments.length).toFixed(2);
}