求平均数,去除一个最高分,去除一个最低分
方法一:
// argument是一个类数组集合,它不是数组,不能直接使用数组的方法
function avgFn () {
var ary = [];
for (var i = 0; i<arguments.length; i++) {
console.log()
ary[ary.length] = arguments[i]
}
ary.sort(function(a,b) {
return a-b;
})
ary.shift()
ary.pop()
return (eval(ary.join("+")) / ary.length).toFixed(2)
}
var res = avgFn(9.8, 9.7, 10 ,9.9, 9.0, 9.8, 3.0);
console.log(res)
方法二:借用数组原型上的slice方法,当slice执行的时候,让方法中的this变为我要处理的arguments,实现将类数组arguments转换为数组
function argFn () {
var ary = [].slice.call(arguments)
ary.sort(function(a,b) {
return a-b;
})
ary.shift()
ary.pop()
return (eval(ary.join("+")) / ary.length).toFixed(2)
}
var res = avgFn(9.8, 9.7, 10 ,9.9, 9.0, 9.8, 3.0);
console.log(res)
方法三:通过改变this指向
function argFn () {
[].sort.call(arguments,function (a,b) {
return a-b;
});
[].shift.call(arguments);
[].pop.call(arguments);
return ( eval([].join(arguments,"+") ) / arguments.length ).toFixed(2);
}
var res = avgFn(9.8, 9.7, 10 ,9.9, 9.0, 9.8, 3.0);
console.log(res)