具體代碼如下
//模擬內置的slice實現數組克隆的功能 Array.prototype.mySlice = function(){ //內置的代碼 var ary = []; for(var i =0;i<this.length;i++){ ary[ary.length] = this[i] } return ary //自己寫的一份把arguments轉換為數組的代碼 // var ary = []; // for(var i = 0;i<arguments.length;i++){ // ary[ary.length] = arguments[i] // } } function avgFn(){ //1、將類數組轉化為數組 把arguments克隆一份一模一樣的數組出來 //借用數組原型上的slice方法,當slice執行的時候,讓方法中的this變為我們要處理的arguments,實現將類數組arguments轉化為數組 // var ary = []; // for(var i = 0;i<arguments.length;i++){ // ary[ary.length] = arguments[i] // } //第一步可以進行優化 var ary = Array.prototype.slice.call(arguments);//或者[].slice.call(arguments) //2、給數組排序,去掉開頭和結尾,剩下的求平均數 ary.sort(function(a,b){ return a-b }) //也可以借用數組的sort排序 Array.prototype.sort.call(arguments,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)