求數組的最小值和最大值 寫一個函數,功能就是求參數中的平均數,裡面涉及到arguments這個類數組 並且把這個類數組轉換成數組 然後利用數組的方法進行求平均數 再寫一種方法 更加對call的用法的理解 以及對類數組轉換成數組的理解 再寫點註意的事情:在IE6至IE8中 對 arguments 這個 ...
求數組的最小值和最大值
1 //求數組當中最大值和最小值 2 var arr=[3,2,6,1,45,23,456,23,2,6,3,45,37,89,30]; 3 //第一種方法 根據排序方法來求最大值和最小值 從小到大排序 第0位就是最小值 最後一位就是最大值 4 arr.sort(function(a,b){ 5 return a-b; //按從小大的情況排序 6 //return b-a; 按從大到小的情況排序 7 }) 8 console.log(arr); 9 var min=arr[0]; 10 var max=arr[arr.length-1]; 11 console.log(min,max);// 1,456 12 13 var arr=[3,2,6,1,45,23,456,23,2,6,3,45,37,89,30]; 14 //第二種方法 根據每個數組元素進行比較 假設第一個最大或最小 然後跟後面的元素進行比較 15 var min=arr[0]; 16 var max=arr[0]; 17 for(var i=0;i<arr.length;i++){ 18 arr[i]<min?min=arr[i]:min; 19 arr[i]>max?max=arr[i]:max; 20 } 21 console.log(min,max); // 1,456 22 23 //第三種方法 根據Math.max,Math.min以及apply傳參 24 var min=Math.min.apply(window,arr); 25 var max=Math.max.apply(window,arr); 26 console.log(min,max); 27 28 //第四種方法 根據Math.max,Math.min和evel 29 //eval('string') 轉換字元串成表達式 30 var min=eval('Math.min('+arr.toString()+')'); 31 var max=eval('Math.max('+arr.toString()+')'); 32 console.log(min,max);
寫一個函數,功能就是求參數中的平均數,裡面涉及到arguments這個類數組 並且把這個類數組轉換成數組 然後利用數組的方法進行求平均數
1 //求一組數的平均數,去掉最小數和最大數 求數組的平均數 2 //利用數組原型鏈上的slice克隆數組功能及call改變this,以及sort進行排序去掉最大值及最小值 3 function avgFn(){ 4 var arr=Array.prototype.slice.call(arguments); //借用slice克隆的功能把arguments這個類數組轉換成數組 5 arr.sort(function(a,b){ 6 return a-b; 7 }) 8 arr.shift(); //去除數組的首位 9 arr.pop(); //去除數組的尾位 10 return (eval(arr.join('+'))/arr.length).toFixed(2); 11 } 12 console.log(avgFn(8.0,3.0,5.0,4.0,5.5,6.5,8,4.0,5.5));
再寫一種方法 更加對call的用法的理解 以及對類數組轉換成數組的理解
1 function avgFn(){ 2 Array.prototype.sort.call(arguments,function(a,b){ 3 return a-b; 4 }); 5 Array.prototype.shift.call(arguments); 6 Array.prototype.pop.call(arguments); 7 return (eval(Array.prototype.join.call(arguments,'+'))/arguments.length).toFixed(2); 8 } 9 console.log(avgFn(8.0,3.0,5.0,4.0,5.5,6.5,8,4.0,5.5));
再寫點註意的事情:在IE6至IE8中 對 arguments 這個類數組轉換成數組是相容的 但對元素集合以及節點集合這樣的類數組存在不相容 那麼怎麼辦呢 老老實實用for迴圈吧 那麼怎麼去相容頁面嗎?可以 用 try{} catch(e){} 這個來判斷是非相容。
再細講一下sort方法吧
1 var arr=[2,3,45,6,45,67,56,6,56,789,55,45,43,45]; 2 //arr.sort(); 這個方法只對10以內的數字才會有效 比如說 它會認為8>76 3 arr.sort(function(a,b){ 4 return a-b; //意思就是從小排到大 用另外一種意思理解 就是 return 大於0的 就是從小排到大 ,小於0 就是大排到小 5 //如果想打亂一個數組 那麼return Math.random()-0.5 就OK了。 6 }) 7 //ok,都是一些數字的排序 有啥意思 如果是中文字元串呢 那麼怎麼排序呢 8 //那就放神器了 localeCompare() 這個就是可以把中文字元串轉換成拼音字元串然後進行比較 前面字元串小於括弧中的字元串那就是返回1 還是看代碼吧 9 arr=['徐文童鞋','博客園童鞋','張三','李四']; 10 arr.sort(function(a,b){ 11 return a.localeCompare(b); 12 }) 13 console.log(arr);//(4) ["博客園童鞋", "張三", "徐文童鞋", "李四"]