用 a[prop] > b[prop] 排序中文,結果不符合拼音/筆畫順序(按 Unicode 碼點排序)。
String.prototype.localeComparefunction getSortFun(order, sortBy) {
return function(a, b) {
const valA = a[sortBy];
const valB = b[sortBy];
if (order === 'asc')
return valA.localeCompare(valB, 'zh-CN', {sensitivity: 'variant'});
else
return valB.localeCompare(valA, 'zh-CN', {sensitivity: 'variant'});
};
}
// 使用
data.sort(getSortFun('asc', 'name'));
| 參數 | 值 | 說明 |
|---|---|---|
| locales | 'zh-CN' | 中文簡體排序規則(拼音) |
| options.sensitivity | 'variant' | 區分大小寫、音調、變體 |
| options.ignorePunctuation | true | 忽略標點(可選) |
| options.numeric | true | 數字按數值排序(如 "2" < "10") |