讓我們來看看如何在JavaScript中按照屬性值對對象數組進行排序吧!

假設你有一個對象數組。

你可能面臨這樣的問題:如何按照某個屬性的值對該數組進行排序?

假設你有如下的對象數組:

const list = [
 { color: 'white', size: 'XXL' },
 { color: 'red', size: 'XL' },
 { color: 'black', size: 'M' }
]

你想要渲染這個列表,但首先你想要按照其中一個屬性的值對其進行排序。比如按照顏色名稱的字母順序排序:black, red, white。

你可以使用Arraysort()方法,該方法接受一個回調函數作為參數,該回調函數接受數組中的兩個對象(我們稱之為 ab)作為參數:

list.sort((a, b) => (a.color > b.color) ? 1 : -1)

當我們返回1時,該函數告訴sort()函數在排序中應該優先選擇對象b而不是對象a。返回-1則相反。

回調函數還可以計算其他屬性,以處理顏色相同的情況,同時根據第二個屬性進行排序:

list.sort((a, b) => (a.color > b.color) ? 1 : (a.color === b.color) ? ((a.size > b.size) ? 1 : -1) : -1)