讓我們來看看如何在JavaScript中按照屬性值對對象數組進行排序吧!
假設你有一個對象數組。
你可能面臨這樣的問題:如何按照某個屬性的值對該數組進行排序?
假設你有如下的對象數組:
const list = [
{ color: 'white', size: 'XXL' },
{ color: 'red', size: 'XL' },
{ color: 'black', size: 'M' }
]
你想要渲染這個列表,但首先你想要按照其中一個屬性的值對其進行排序。比如按照顏色名稱的字母順序排序:black, red, white。
你可以使用Array
的sort()
方法,該方法接受一個回調函數作為參數,該回調函數接受數組中的兩個對象(我們稱之為 a
和 b
)作為參數:
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)