需求:编写一个方法,实现任意数求平均数(去除数字收纳柜的最大和最小,然后在算平均数,保留小数点后两位)
// 普通版本
let fn = function(){
//argument: 类数组不能直接使用数组原型撒谎给你打 方法
// 1、先给argument排序(不能直接使用sort方法),把排序后的值去掉首末位(去掉最大值和最小值)
// 2、把剩下的值求和,除以总长度,求出平均值即可
// 把类数组转换为数组
let ary =[]
for(let i =0;i<arguments.length;i++){
ary.push(arguments[i]);
}
// 给ary排序,去除首未,
ary.sort(function(a,b){
return a-b
})
ary.pop();
ayr.shift();
//然后求和,最后求平均
let total = 0;
for(let i=0;i<ary.length;i++){
total+=ary[i]
}
return (total/ary.length).toFixed(2)
}
console.log(fn(1,2,3,4,5,6,7))
// 改良版本
let fn = function(){
let ary = [].slice.call(arguments,0);//把类数组转换为数组
ary.sort(function(a,b){
return a-b;
}).pop();
ary.shift();
return (eval(ary.join("+"))/ary.length).toFixed(2)
}
// ES6版本
let fn = function(){
let ary = [...arguments]; //把类数组转换为数组
ary.sort(function(a,b){
return a-b;
}).pop();
ary.shift();
return (eval(ary.join("+"))/ary.length).toFixed(2)
}
//版本2
let fn = function(){
let ary = Array.from(arguments); //把类数组转换为数组
ary.sort(function(a,b){
return a-b;
}).pop();
ary.shift();
return (eval(ary.join("+"))/ary.length).toFixed(2)
}
//版本3
let fn = function(...arg){
// ...arg 传进来就是数组
ary.sort(function(a,b){
return a-b;
}).pop();
ary.shift();
return (eval(ary.join("+"))/ary.length).toFixed(2)
}