對于以下陣列
[
{ name: '4K UHD', commentator: 'Ali' },
{ name: 'English 1 HD', commentator: 'Ahmed' },
{ name: 'English 3 HD', commentator: 'Ahmed' },
{ name: 'Premium 1 HD', commentator: 'Ali' },
{ name: 'Premium 2 HD', commentator: 'Ahmed' },
]
我想對它進行排序,以便具有 Premium 的物件name(作為最后兩個物件)排在第一位,但也按升序排列。
想要的結果是這樣的
[
{ name: 'Premium 1 HD', commentator: 'Ali' },
{ name: 'Premium 2 HD', commentator: 'Ahmed' },
{ name: '4K UHD', commentator: 'Ali' },
{ name: 'English 1 HD', commentator: 'Ahmed' },
{ name: 'English 3 HD', commentator: 'Ahmed' },
]
// or like this
[
{ name: 'Premium 1 HD', commentator: 'Ali' },
{ name: 'Premium 2 HD', commentator: 'Ahmed' },
{ name: 'English 1 HD', commentator: 'Ahmed' },
{ name: 'English 3 HD', commentator: 'Ahmed' },
{ name: '4K UHD', commentator: 'Ali' },
]
uj5u.com熱心網友回復:
通過創建自定義比較函式
const cmp = (a, b) => {
const pa = a.name.startsWith("Premium");
const pb = b.name.startsWith("Premium");
return
pa !== pb
// comparing Premium vs non-Premium, Premium "wins"
? (pa ? -1 : 1)
// everything else (i.e. Prem vs Prem or non-Prem vs non-Prem)
: a.name.localeCompare(b.name);
};
dataArray.sort(cmp);
您可以確保以 開頭的所有字串Premium都移到排序的頂部,同時確保在Premium和非Premium“組”之間保留排序順序。
uj5u.com熱心網友回復:
嘗試降序:
array.sort((a, b) => a.name < b.name ? 1 : -1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533893.html
