/**
 * 數字、英文、中文，排序
 * @param {array} data
 * @returns
 */
export function sortNumEngZhtw(data) {
  return data.sort((a, b) => {
    // 檢查兩個值是否都是數字
    var isANumber = !isNaN(parseFloat(a)) && isFinite(a);
    var 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) {
  // 檢查兩個值是否都是數字
  var isANumber = !isNaN(parseFloat(a)) && isFinite(a);
  var 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' });
}
