说我有一个像这样的数组:

["a", "bb", 1, 2, "z", 4, 3]

我希望结果数组是这样的:
["a", "bb", "z", 1, 2, 3, 4]

我该怎么写?我将其作为谓词:
export const someBrokenSort = (option1, option2) => {
  const numberOption1 = Number(stripCommas(option1));
  const numberOption2 = Number(stripCommas(option2));
  if (numberOption1 < numberOption2 || isNaN(numberOption1)) return -1;
  if (numberOption1 > numberOption2 || isNaN(numberOption2)) return 1;

  return 0;
};

但这结果是这样的:
 ["z", "bb", "a", 1, 2, 3, 4]

最佳答案

您可以检查类型并将字符串移到顶部。

var array = ["a", "bb", 1, 2, "z", 4, 3];
array.sort((a, b) =>
    (typeof a === 'number') - (typeof b === 'number') ||
    a - b
);

console.log(array);

08-05 16:15