如何对数字和字符串进行排序,同时保持字符串按顺序排列在前面,数字在JS后面排序?

Jwa*_*622 2 javascript sorting

说我有这样的数组:

["a", "bb", 1, 2, "z", 4, 3]
Run Code Online (Sandbox Code Playgroud)

我希望结果数组是这样的:

["a", "bb", "z", 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我怎么写这个?我有这个作为我的谓词:

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;
};
Run Code Online (Sandbox Code Playgroud)

但结果如下:

 ["z", "bb", "a", 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 6

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

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

console.log(array);
Run Code Online (Sandbox Code Playgroud)

  • @Scrimothy`false`用数字运算符强制为'0`. (2认同)