我正在嘗試將以下顏色字串相互比較,我為此使用 localeCompare,這里我們有以下顏色:“黃色”、“綠色”、“白色”和透明。這些保存在變數“狀態”中,如下所示。
我怎樣才能最好地比較這些字串?我可以設定某種排序順序嗎?
arr1.sort((a, b) => (a.status != null) ? a.status.localeCompare(b.status) : 0)
我嘗試反轉它,但那是純隨機的東西,我很難理解這一點。
arr1 中存盤了多個資料,例如
name: 'name'
firstName: 'firstname'
status: 'yellow'
我有一個渲染的表格,在這個表格中,我們希望首先顯示黃色,第二個是綠色,然后是白色,在表格末尾透明。
- 黃色
- 綠色
- 白色的
- 透明的
使用 localeCompare,當我按字母順序排序時,當然黃色顯示在串列的末尾。
uj5u.com熱心網友回復:
由于您可以使用的字串中似乎沒有明確的值,那么您自己定義順序如何:
type StatusColor = 'yellow' | 'green' | 'white' | 'transparent';
const colorOrder: Record<StatusColor, number> = {
yellow: 0,
green: 1,
white: 2,
transparent: 3
};
const exampleStatus: StatusColor[] = ['yellow', 'white', 'transparent', 'green', 'green', 'yellow', 'transparent', 'yellow'];
exampleStatus.sort((a, b) => colorOrder[a] - colorOrder[b]);
console.log(exampleStatus); // [ "yellow", "yellow", "yellow", "green", "green", "white", "transparent", "transparent" ]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/330851.html
標籤:javascript 反应 打字稿
上一篇:如何比較具有不同欄位的2個不同物件,并創建一個具有告訴公共元素的新欄位的新物件
下一篇:擴展客戶端缺失功能
