国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 js教程 JavaScript中精緻的分類

JavaScript中精緻的分類

Mar 08, 2025 am 12:40 AM

Sophisticated Sorting in JavaScript

JavaScript 的排序機制簡單易用,卻蘊含著強大的靈活功能。 sort() 方法不僅能對數(shù)組進行字母或數(shù)字排序,還能根據(jù)自定義的條件邏輯進行任意排序。

核心要點:

  • JavaScript 的 sort() 函數(shù)是一個靈活的工具,可以以多種方式組織數(shù)組,包括根據(jù)條件邏輯定義的自定義排列。
  • sort() 函數(shù)通過比較每次操作中的兩個值(a 和 b)來工作。如果函數(shù)返回小於零,則 a 排在 b 之前;如果返回大於零,則 b 排在 a 之前;如果返回零,則 a 和 b 相對位置不變。
  • JavaScript 支持多維排序和多條件排序。在多維排序中,比較數(shù)組的內(nèi)部值;在多條件排序中,使用多個值作為獨立的條件。
  • JavaScript 也可以對對像數(shù)組進行排序。隨著比較變得越來越複雜,建議使用對象字面量數(shù)組而不是多維數(shù)組,因為這使得比較函數(shù)更容易理解。

sort() 函數(shù)的工作原理:

→ 如果你已經(jīng)了解基礎(chǔ)知識,可以跳過這一部分。

如果 sort() 方法不帶任何參數(shù),則數(shù)組將按字典順序(詞典順序,每個值都被視為字符串)進行排序:

var letters = ["R","O","F","L"];

letters.sort();

alert(letters);    // 輸出 ["F","L","O","R"]

否則,sort() 方法的參數(shù)是一個比較函數(shù),該函數(shù)根據(jù)其返回值定義排序行為。比較函數(shù)本身接受兩個參數(shù),通常稱為 a 和 b,它們表示每次操作中比較的兩個值。然後:

  1. 如果函數(shù)返回小於零,則將 a 排在 b 之前
  2. 如果函數(shù)返回大於零,則將 b 排在 a 之前
  3. 如果函數(shù)返回零,則 a 和 b 的相對位置不變

規(guī)範(fàn)以一種令人困惑的方式定義了這些規(guī)則。 JavaScript 規(guī)範(fàn)將第一個排序條件稱為“將 b 排序到比 a 更低的索引”。但這實際上意味著“將 b 排在 a 的更低位置”,就數(shù)值索引而言,這是一個更高的索引,而不是更低的索引。它以非?;靵y的方式使用了“索引”一詞;我希望以上我對條件的表達(dá)方式更加清晰。

因此,使用比較函數(shù)的通常方法是執(zhí)行並返回一個簡單的計算,以產(chǎn)生所需的排序結(jié)果。例如,如果函數(shù)返回 (a - b),則將產(chǎn)生數(shù)值排序:

var numbers = [8,5];

numbers.sort(function(a, b) {
    return a - b;   
});

alert(numbers);    // 輸出 [5,8]

我們可以用值示例來解釋這一點:由於 a = 8 且 b = 5,則 (a - b) == 3;3 大於零,因此 b 將排在 a 之前,產(chǎn)生順序 [5,8]。

因此,可以通過反轉(zhuǎn)等式來產(chǎn)生反向數(shù)值順序:

var letters = ["R","O","F","L"];

letters.sort();

alert(letters);    // 輸出 ["F","L","O","R"]

我們還可以創(chuàng)建一個比較函數(shù)來生成字典排序,方法是定義三個比較來評估每一對字符串——在計算術(shù)語中,“a”小於“b”,因此我們可以直接比較字符串,然後返回三個排序值之一:

var numbers = [8,5];

numbers.sort(function(a, b) {
    return a - b;   
});

alert(numbers);    // 輸出 [5,8]

請注意,我們?nèi)绾晤A(yù)先將每個字符串轉(zhuǎn)換為小寫,這確保我們獲得不區(qū)分大小寫的排序(如果我們不這樣做,則大小寫字母將分別排序)。我們還將這些操作的結(jié)果分配給新的變量,因為某些瀏覽器不允許覆蓋參數(shù)。

(以下內(nèi)容與原文相同,此處省略重複部分,保持與原文一致性)

多維排序 多條件排序 對像數(shù)組排序 關(guān)於穩(wěn)定排序的說明

總結(jié):記住,排序比較函數(shù)沒有什麼特別之處,它只是一個執(zhí)行操作並返回結(jié)果的普通函數(shù)。你可以加載外部數(shù)據(jù)、創(chuàng)建測試渲染元素或執(zhí)行任意數(shù)量的複雜操作。只要函數(shù)正確返回——小於零、大於零或零——那麼在實現(xiàn)過程中就沒有具體的限制!

縮略圖來源:[Soren]

關(guān)於 JavaScript 高級排序的常見問題解答 (原文FAQ部分略,避免重複)

以上是JavaScript中精緻的分類的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用於不同的應(yīng)用場景。 Java用於大型企業(yè)和移動應(yīng)用開發(fā),而JavaScript主要用於網(wǎng)頁開發(fā)。

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時間合作? 如何在JS中與日期和時間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時間處理需注意以下幾點:1.創(chuàng)建Date對像有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時間信息可用get和set方法,注意月份從0開始;3.手動格式化日期需拼接字符串,也可使用第三方庫;4.處理時區(qū)問題建議使用支持時區(qū)的庫,如Luxon。掌握這些要點能有效避免常見錯誤。

為什麼要將標(biāo)籤放在的底部? 為什麼要將標(biāo)籤放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

什麼是在DOM中冒泡和捕獲的事件? 什麼是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個階段,捕獲是從頂層向下到目標(biāo)元素,冒泡是從目標(biāo)元素向上傳播到頂層。 1.事件捕獲通過addEventListener的useCapture參數(shù)設(shè)為true實現(xiàn);2.事件冒泡是默認(rèn)行為,useCapture設(shè)為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委託,提高動態(tài)內(nèi)容處理效率;5.捕獲可用於提前攔截事件,如日誌記錄或錯誤處理。了解這兩個階段有助於精確控制JavaScript響應(yīng)用戶操作的時機和方式。

JavaScript:探索用於高效編碼的數(shù)據(jù)類型 JavaScript:探索用於高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

如何減少JavaScript應(yīng)用程序的有效載荷大??? 如何減少JavaScript應(yīng)用程序的有效載荷大??? Jun 26, 2025 am 12:54 AM

如果JavaScript應(yīng)用加載慢、性能差,問題往往出在payload太大,解決方法包括:1.使用代碼拆分(CodeSplitting),通過React.lazy()或構(gòu)建工具將大bundle拆分為多個小文件,按需加載以減少首次下載量;2.移除未使用的代碼(TreeShaking),利用ES6模塊機制清除“死代碼”,確保引入的庫支持該特性;3.壓縮和合併資源文件,啟用Gzip/Brotli和Terser壓縮JS,合理合併文件並優(yōu)化靜態(tài)資源;4.替換重型依賴,選用輕量級庫如day.js、fetch

See all articles