我有不同風格的字體對象分組到數組中。每個字體對象都有一個屬性sub_family,它可以是Regular,Italic,Bold,Bold Italic(或某些變體,例如Italic,有時也稱爲斜體)。當它們從數據庫中出來時,它們是隨機排列的,需要像上面那樣排序;經常永遠是第一,第二斜體等這是編寫這種非數字/字母排序的最佳方式嗎?
下面是我使用的排序功能,它的工作原理,但我想看看你們能想出更好的/替代解決方案:
// input: ["Bold Italic", "Regular", "Bold", "Italic"]
sortFont = function(a, b) {
// regular
if (/^([Rr]egular|[Nn]ormal)$/.test(a.sub_family)) { return -1; }
if (/^([Rr]egular|[Nn]ormal)$/.test(b.sub_family)) { return 1; }
// italic
if (/^([Ii]talic|[Ii]nclined|[Ii]t|[Oo]blique|[Oo]bl)$/.test(a.sub_family)) { return -1; }
if (/^([Ii]talic|[Ii]nclined|[Ii]t|[Oo]blique|[Oo]bl)$/.test(b.sub_family)) { return 1; }
// bold
if (/^([Bb]old|[Bb]d)$/.test(a.sub_family)) { return -1; }
if (/^([Bb]old|[Bb]d)$/.test(b.sub_family)) { return 1; }
}
// output: ["Regular", "Italic", "Bold", "Bold Italic"]
感謝! :)