さまざまなスタイルのフォントオブジェクトを配列にグループ化しています。各フォントオブジェクトには、Regular、Italic、Bold、Bold Italicのいずれかのプロパティsub_familyがあります(または、ItalicはObliqueと呼ばれることもあります)。それらがデータベースから出てくるとき、それらはランダムな順序であり、上記のようにソートする必要があります。レギュラーは常に最初、イタリックは2番目などです。
これが私が使用しているソート関数です、それは機能しますが、皆さんがより良い/代替の解決策を思い付くことができるかどうかを見たかったのです:
// 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"]
ありがとう!:)