一、sort()方法簡介
sort()方法是JavaScript數組對象的一種排序方法,可以按照指定的排序規則進行排序。sort()方法默認是按照Unicode編碼來排序的,這在實際開發中並不好用,所以需要我們自定義排序規則。
二、sort()方法的基本使用
sort()方法的基本使用非常簡單,只需要在數組對象上調用該方法即可。sort()方法可以接收一個函數作為參數,該函數用來指定排序規則。下面是一個簡單的例子:
const arr = [10, 5, 8, 1, 3]; arr.sort(); console.log(arr); // [1, 10, 3, 5, 8]
通過上述代碼可以看出,如果不指定排序規則,默認是按照Unicode編碼來排序的。
三、降序排序
如果我們想要按照數字大小進行排序,需要指定排序規則。下面是一個簡單的降序排序的例子:
const arr = [10, 5, 8, 1, 3]; arr.sort((a, b) => b - a); console.log(arr); // [10, 8, 5, 3, 1]
在上述代碼中,我們傳遞了一個函數作為參數,函數使用了箭頭函數的形式。函數內部使用了b-a,這表示降序排序。
四、升序排序
如果我們想要實現升序排序,只需將函數改成a-b即可。
const arr = [10, 5, 8, 1, 3]; arr.sort((a, b) => a - b); console.log(arr); // [1, 3, 5, 8, 10]
五、按照字母順序排序
除了按照數字大小排序,我們還可以按照字母順序排序。下面是一個簡單的按照字母順序排序的例子:
const arr = ['banana', 'apple', 'pear', 'orange']; arr.sort(); console.log(arr); // ['apple', 'banana', 'orange', 'pear']
在上述代碼中,我們將字元串存儲在數組中,調用sort()方法後按照字母順序排列。
六、根據對象屬性排序
我們也可以根據對象屬性進行排序,下面是一個根據人的年齡屬性進行排序的例子:
const people = [ { name: 'Tom', age: 18 }, { name: 'Jerry', age: 21 }, { name: 'May', age: 15 } ]; people.sort((a, b) => a.age - b.age); console.log(people); // [ // { name: 'May', age: 15 }, // { name: 'Tom', age: 18 }, // { name: 'Jerry', age: 21 } // ]
在上述代碼中,我們將對象存儲在數組中,調用sort()方法後按照年齡進行排序。在函數中使用a.age – b.age可以實現升序排序。
七、處理相同的排序結果
有時候我們需要對相同的排序結果做出處理,比如在上述例子中,有可能存在年齡相同的人,我們可能需要根據其他屬性進行排序。下面是一個使用多個排序規則的例子:
const people = [ { name: 'Tom', age: 18, grade: 'A' }, { name: 'Jerry', age: 21, grade: 'B' }, { name: 'May', age: 15, grade: 'B' }, { name: 'John', age: 18, grade: 'C' } ]; people.sort((a, b) => { if (a.age !== b.age) { return a.age - b.age; } else if (a.grade !== b.grade) { return a.grade > b.grade ? 1 : -1; } else { return a.name > b.name ? 1 : -1; } }); console.log(people); // [ // { name: 'May', age: 15, grade: 'B' }, // { name: 'John', age: 18, grade: 'C' }, // { name: 'Tom', age: 18, grade: 'A' }, // { name: 'Jerry', age: 21, grade: 'B' } // ]
在上述代碼中,我們先根據年齡進行排序,如果存在相同的年齡,則根據成績進行排序,如果成績也相同,則根據姓名進行排序。
八、結語
通過上述的舉例,我們可以發現sort()方法有非常大的靈活性,可以根據需求來進行排序。在實際開發中,我們可以根據需要來選擇使用哪種排序規則,以達到最優的效果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/151356.html