评委打分的:减去一个最高分,减去一个最低分,然后剩下的分数为有效的分数,取它的平均值;如下:

 

<script type="text/javascript">

/* Array.prototype.slice = function (num) {
var ary = [];
for (var i = num; i < this.length; i++) {
ary.push(this[i]);
}
return ary;
}*/

//arguments是一个对象数据类型,因为和数组长得很像,所以也叫做类数组,但是不是数组,也不是数组Array内置类的实例,所以不能直接的使用我们的数组的那十几个方法
/*
//1、获取所有项的和,获取arguments中的最大值和最小值,然后= 在把最大的和最小的减去,最终除以我们的length-2
var max = Math.max.apply(null, arguments);
var min = Math.min.apply(null, arguments);
var total = 0;
for (var i = 0; i < arguments.length; i++) {
total += arguments[i];
}
total = total - max - min;
return total / (arguments.length - 2);
*/

/*
//2、我们说类数组不能直接的用数组的方法,那我们就把arguments变成数组就可以了
var ary = [].slice.call(arguments, 0);
ary.sort(function (a, b) {
return a - b;
});
ary.pop();
ary.shift();
return eval(ary.join("+")) / ary.length;
*/

/*
3、类数组借用数组的方法来实现相关的操作
//用call或者apply实现将类数组转化为数组:arguments借用数组的slice方法实现克隆出一份和arguments一模一样的数组
Array.prototype.sort.call(arguments, function (a, b) {
return a - b;
});
console.dir(arguments);
Array.prototype.shift.call(arguments);
console.dir(arguments);

将类数组转化数组
var ary = Array.prototype.slice.call(arguments, 0);
*/

function meanScore() {
//4、利用原型的知识,把arguments的__proto__强制指向Array.prototype,这样arguments就能直接的用我们数组的那十几个方法了
arguments.__proto__ = Array.prototype;
arguments.sort(function (a, b) {
return a - b;
});
arguments.pop();
arguments.shift();
return eval(arguments.join("+")) / arguments.length;
}
var num = meanScore(89, 78, 99, 79, 86, 95, 51, 92);
console.log(num);

</script>