求數組的最小數、最大值,求一組數的平均數,sort函數詳解,類數組轉數組

来源:http://www.cnblogs.com/ES2015/archive/2017/05/21/6884386.html
-Advertisement-
Play Games

求數組的最小值和最大值 寫一個函數,功能就是求參數中的平均數,裡面涉及到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) ["博客園童鞋", "張三", "徐文童鞋", "李四"]

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用top和left屬性可能會造成元素相互重疊在一起,此時可以使用z-index屬性。z-index屬性用來控制重疊元素的顯示順序,值較高的元素將覆蓋值較低的元素。如果使用值-1,則表示元素將至於頁面預設文本的後面,這對於設置背景圖案是很有用的。如果把電腦屏幕看作X-Y平面的話,那麼z軸就是垂直於屏 ...
  • 本文轉載自:http://www.cnblogs.com/lovesong/p/5745893.html meta標簽作用 META標簽是HTML標記HEAD區的一個關鍵標簽,提供文檔字元集、使用語言、作者等基本信息,以及對關鍵詞和網頁等級的設定等,最大的作用是能夠做搜索引擎優化(SEO)。 PS: ...
  • 1.<label hidden>看得見嗎</label> //hidden為隱藏屬性 2. <input tabindex="1" /> <textarea tabindex="2" spellcheck="true" cols="60" rows="5"></textarea> //spellch ...
  • 盒子陰影樣式單詞:box-shadow 語法 <style> div{box-shadow:0 0 1px #000 inset;} </style> 其中,第一個和第二個0分別代表邊框間距靠左和靠上;1px表示陰影範圍;#000表示陰影顏色為黑色;inset 代表框內陰影 ,沒有inset 則代表 ...
  • 解構賦值(destructuring assignment)語法是一個 Javascript 表達式,這種語法能夠更方便的提取出 Object 或者 Array 中的數據。這種語法可以在接受提取的數據的地方使用,比如一個表達式的左邊。有明確的語法模式來告訴我們如何使用這種語法提取需要的數據值。 ...
  • 1.<meta http-equiv="Pragma" content="no-cache"/> //禁止頁面緩存 2.<script defer src="http://code.jquery.com/jquery-1.10.1.min.js" onload="alert('a')"></scri ...
  • 一、安裝D3.js 1.網路連接 2.命令行安裝 cnpm || npm install d3 --save => 我採用的是cnpm install d3 --save 3.創建node 伺服器 a. cnpm || npm install express --save =>前面教程已經說了exp ...
  • 簡單介紹了自製的WebGL模型編輯器“Newland”的使用方法和設計思路 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...