JavaScript:將組織值排序
如果您已經了解 JavaScript 陣列的基礎知識,那麼是時候透過更高級的主題將您的技能提升到新的水平了。在本系列教程中,您將探索在 JavaScript 中使用陣列進行程式設計的中級主題。
對陣列進行排序是使用 JavaScript 程式設計時最常見的任務之一。因此,作為 JavaScript 程式設計師,學習如何正確對陣列進行排序至關重要,因為您將在現實專案中經常這樣做。錯誤的排序技術確實會降低您的應用程式的速度!
過去,Web 開發人員必須使用 jQuery 等第三方函式庫並編寫大量程式碼才能對清單集合中的值進行排序。幸運的是,從那時起,JavaScript 已經發生了巨大的發展。如今,您只需一行程式碼即可對包含數千個值的 JavaScript 陣列進行排序,而無需使用任何第三方程式庫。
在本文中,我將向您展示如何在 JavaScript 中對簡單和複雜的陣列集合進行排序。我們將使用 JavaScript sort()
方法進行排序:
- 數字數組
- 字串陣列
- 複雜物件數組
- 按名稱(字串)
- 按 ID(號碼)
- 按出生日期(日期)
在本教學結束時,您應該徹底了解 JavaScript 的 sort()
方法的工作原理以及如何使用它對數字、字串和物件的陣列進行排序。
JavaScript sort()
方法
JavaScript sort()
方法是 JavaScript 中最有用且最常用的陣列方法之一。它允許您快速輕鬆地按升序或降序對資料元素數組進行排序。
您可以使用該方法對數字、字串、日期甚至物件的陣列進行排序。 sort()
方法的工作原理是取得元素陣列並根據某些標準對它們進行排序。標準可以是函數、比較運算子或值數組。
對數字數組進行排序
使用 sort
方法對數字陣列進行排序非常簡單:
let numbers = [12, 88, 57, 99, 03, 01, 83, 21] console.log(numbers.sort()) // output [1, 12, 21, 3, 57, 83, 88, 99]
在上面的程式碼中,sort()
方法對numbers
進行升序排序,這是預設的模式。
您也可以向後排序數字(即按降序排列)。為此,您需要建立以下自訂排序函數:
function desc(a, b) { return b - a }
此函數接受兩個參數(a
和 b
),它們代表要排序的兩個值。如果傳回正數,則 sort()
方法將理解 b
應在 a
之前排序。如果它傳回負數,則 sort()
將理解 a
應該位於 b
之前。如果b
> a
,則函數將傳回正數,這表示如果a
小於b
,則b
將位於a
之前。
console.log(numbers.sort(desc)) // output [99, 88, 83, 57, 21, 12, 3, 1]
接下來是如何對字串陣列進行排序。
在 Java 腳本中對字串陣列進行排序
對字串值進行排序同樣簡單:
let names = ["Sam", "Koe", "Eke", "Victor", "Adam"] console.log(names.sort()) // output ["Adam", "Eke", "Koe", "Sam", "Victor"]
以下是將相同字串依降序排序的函數:
function descString(a, b) { return b.localeCompare(a); }
如果第二個名稱按字母順序排在第一個名稱之後,我們會從函數傳回 1
,這表示第二個名稱將在排序數組中排在第一位。否則,我們傳回 -1
,如果兩者相等,則傳回 0
。
現在,如果您對 names
陣列執行排序方法,並以 desc
作為其參數,您會得到不同的輸出:
console.log(names.sort(descString)) // ["Victor", "Sam", "Koe", "Eke", "Adam"]
在 JavaScript 中對複雜物件陣列進行排序
到目前為止,我們只對字串和數字等簡單值進行排序。您也可以使用 sort()
方法對物件陣列進行排序。讓我們在下面的部分中看看如何操作。
依名稱(字串屬性)對物件進行排序
這裡我們有一個 people
數組,其中包含多個 person 物件。每個物件由 id
、name
和 dob
屬性組成:
const people = [ {id: 15, name: "Blessing", dob: '1999-04-09'}, {id: 17, name: "Aladdin", dob: '1989-06-21'}, {id: 54, name: "Mark", dob: '1985-01-08'}, {id: 29, name: "John", dob: '1992-11-09'}, {id: 15, name: "Prince", dob: '2001-09-09'} ]
要透過 name
屬性對此陣列進行排序,我們必須建立一個自訂排序函數並將其傳遞給 sort
方法:
students.sort(byName)
這個 byName
自訂排序函數每次都會接受兩個對象,並比較它們的兩個名稱屬性以查看哪個更大(即按字母順序排列在前面):
function byName(a, b) { return a.name.localeCompare(b.name); }
現在,如果您再次執行程式碼,您將得到以下結果:
[ {id: 17, name: "Aladdin", dob: '1989-06-21'}, {id: 15, name: "Blessing", dob: '1999-04-09'}, {id: 29, name: "John", dob: '1992-11-09'}, {id: 54, name: "Mark", dob: '1985-01-08'}, {id: 32, name: "Prince", dob: '2001-09-09'} ]
按 ID 排序(数字属性)
在前面的示例中,我们按名称(字符串)进行排序。在此示例中,我们将按每个对象的 ID 属性(数字)进行排序。
为此,我们可以使用以下函数:
function byID(a, b) { return parseInt(a.id) - parseInt(b.id) }
在函数中,我们使用 parseInt()
来确保该值是一个数字,然后我们将两个数字相减以获得负值、正值或零值。使用此函数,您可以按公共数字属性对任何对象数组进行排序。
console.log(students.sort(byID)) /* [ {id: 15, name: "Blessing", dob: '1999-04-09'}, {id: 17, name: "Aladdin", dob: '1989-06-21'}, {id: 29, name: "John", dob: '1992-11-09'}, {id: 32, name: "Prince", dob: '2001-09-09'} {id: 54, name: "Mark", dob: '1985-01-08'}, ] */
按日期排序
假设您想要构建一个应用程序,允许用户从数据库下载姓名列表,但您希望根据出生日期(从最年长到最年轻)按时间顺序排列姓名.
此函数按年、月、日的时间顺序对出生日期进行排序。
function byDate(a, b) { return new Date(a.dob).valueOf() - new Date(b.dob).valueOf() }
Date().valueOf()
调用返回每个日期的时间戳。然后,我们执行与前面示例中相同的减法来确定顺序。
演示:
console.log(students.sort(byDate)) /* [ {id: 54, name: "Mark", dob: '1985-01-08'}, {id: 17, name: "Aladdin", dob: '1989-06-21'}, {id: 29, name: "John", dob: '1992-11-09'}, {id: 15, name: "Blessing", dob: '1999-04-09'}, {id: 32, name: "Prince", dob: '2001-09-09'} ] */
这种特殊方法在涉及日期顺序的情况下非常方便,例如确定谁有资格获得养老金或其他与年龄相关的福利的申请。
结论
总的来说,使用各种内置方法时,在 JavaScript 中对元素进行排序非常简单。无论您需要对数字、字符串、对象还是日期数组进行排序,都有一种方法可以轻松完成这项工作。借助这些方法,您可以快速轻松地对 JavaScript 应用程序中的任何数据进行排序。
以上是JavaScript:將組織值排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

博客是人們在網上表達觀點、意見和見解的理想平台。許多新手渴望建立自己的網站,卻因擔心技術障礙或成本問題而猶豫不決。然而,隨著平台不斷發展以滿足初學者的能力和需求,現在開始變得比以往任何時候都更容易。 本文將逐步指導您如何建立一個WordPress博客,從主題選擇到使用插件提升安全性和性能,助您輕鬆創建自己的網站。 選擇博客主題和方向 在購買域名或註冊主機之前,最好先確定您計劃涵蓋的主題。個人網站可以圍繞旅行、烹飪、產品評論、音樂或任何激發您興趣的愛好展開。專注於您真正感興趣的領域可以鼓勵持續寫作

有四種方法可以調整 WordPress 文章列表:使用主題選項、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代碼(在 functions.php 文件中添加設置)或直接修改 WordPress 數據庫。

最近,我們向您展示瞭如何通過允許用戶將自己喜歡的帖子保存在個性化庫中來為用戶創建個性化體驗。您可以通過在某些地方(即歡迎屏幕)使用他們的名字,將個性化結果提升到另一個水平。幸運的是,WordPress使獲取登錄用戶的信息變得非常容易。在本文中,我們將向您展示如何檢索與當前登錄用戶相關的信息。我們將利用get_currentuserinfo(); 功能。這可以在主題中的任何地方使用(頁眉、頁腳、側邊欄、頁面模板等)。為了使其工作,用戶必須登錄。因此我們需要使用

您想了解如何在父分類存檔頁面上顯示子分類嗎?在自定義分類存檔頁面時,您可能需要執行此操作,以使其對訪問者更有用。在本文中,我們將向您展示如何在父分類存檔頁面上輕鬆顯示子分類。為什麼在父分類存檔頁面上顯示子分類?通過在父分類存檔頁面上顯示所有子分類,您可以使其不那麼通用,對訪問者更有用。例如,如果您運行一個關於書籍的WordPress博客,並且有一個名為“主題”的分類法,那麼您可以添加“小說”、“非小說”等子分類法,以便您的讀者可以

過去,我們分享過如何使用PostExpirator插件使WordPress中的帖子過期。好吧,在創建活動列表網站時,我們發現這個插件非常有用。我們可以輕鬆刪除過期的活動列表。其次,多虧了這個插件,按帖子過期日期對帖子進行排序也非常容易。在本文中,我們將向您展示如何在WordPress中按帖子過期日期對帖子進行排序。更新了代碼以反映插件中更改自定義字段名稱的更改。感謝Tajim在評論中讓我們知道。在我們的特定項目中,我們將事件作為自定義帖子類型。現在

您是否正在尋找自動化 WordPress 網站和社交媒體帳戶的方法? 通過自動化,您將能夠在 Facebook、Twitter、LinkedIn、Instagram 等平台上自動分享您的 WordPress 博客文章或更新。 在本文中,我們將向您展示如何使用 IFTTT、Zapier 和 Uncanny Automator 輕鬆實現 WordPress 和社交媒體的自動化。 為什麼要自動化 WordPress 和社交媒體? 自動化您的WordPre

要使用 WordPress 主機建站,需要:選擇一個可靠的主機提供商。購買一個域名。設置 WordPress 主機帳戶。選擇一個主題。添加頁面和文章。安裝插件。自定義您的網站。發布您的網站。

我們的一位用戶詢問其他網站如何在頁腳中顯示查詢數量和頁面加載時間。您經常會在網站的頁腳中看到這一點,它可能會顯示類似以下內容:“1.248秒內64個查詢”。在本文中,我們將向您展示如何在WordPress中顯示查詢數量和頁面加載時間。只需將以下代碼粘貼到主題文件中您喜歡的任何位置(例如footer.php)。 queriesin
