Files
lucia-frontend/src/module/sortNumEngZhtw.js
Cindy Chang 4ba7961a5a sonar
2024-08-02 13:24:15 +08:00

44 lines
1.4 KiB
JavaScript

/**
* 數字、英文、中文,排序
* @param {array} data List
* @returns
*/
export function sortNumEngZhtw(data) {
return data.sort((a, b) => {
// 檢查兩個值是否都是數字
const isANumber = !isNaN(parseFloat(a)) && isFinite(a);
const isBNumber = !isNaN(parseFloat(b)) && isFinite(b);
// 如果兩個值都是數字,直接比較大小
if (isANumber && isBNumber) return parseFloat(a) - parseFloat(b);
// 如果其中一個值是數字,將數字視為最小,排在前面
if (isANumber) return -1;
if (isBNumber) return 1;
// 其他情況下,使用 localeCompare 方法進行中文排序
return a.localeCompare(b, 'zh-Hant-TW', { sensitivity: 'accent' });
});
}
/**
* 數字、英文、中文,給 Filter Table 排序
* @param {string} a label
* @param {string} b label
* @returns
*/
export function sortNumEngZhtwForFilter(a, b) {
// 檢查兩個值是否都是數字
const isANumber = !isNaN(parseFloat(a)) && isFinite(a);
const isBNumber = !isNaN(parseFloat(b)) && isFinite(b);
// 如果兩個值都是數字,直接比較大小
if (isANumber && isBNumber) return parseFloat(a) - parseFloat(b);
// 如果其中一個值是數字,將數字視為最小,排在前面
if (isANumber) return -1;
if (isBNumber) return 1;
// 其他情況下,使用 localeCompare 方法進行中文排序
return a.localeCompare(b, 'zh-Hant-TW', { sensitivity: 'accent' });
}