对具有负数和正数的字符串数组进行排序

Ali*_*ali 3 javascript

首先,我找不到解决整个问题的问题。

我曾经比较过这样的数组:

array.sort((a, b) => {
    return a.localeCompare(b, undefined, {numeric: true, sensitivity: 'base'})
})
Run Code Online (Sandbox Code Playgroud)

但是我意识到它不适用于像这样的数组['a', 'A', 'B', -1.50', '0', '1.50', '-2', '2']

预期输出为:['-2', '-1.50', '0', '1.50', '2', 'A', 'a', 'B']

我有一些肮脏的想法可以实现它。但是也许有一种干净便捷的方法。

Nin*_*olz 5

您可以通过获取所需属性的增量来进行比较。这样可以保存数值的顺序。

console.log(
    ['a', 'A', 'B', '-1.50', '0', '1.50', '-2', '2', 'D']
        .sort((a, b) => a - b || a.localeCompare(b, undefined, {sensitivity: 'base'}))
);
Run Code Online (Sandbox Code Playgroud)

numeric: true 可以省略该选项,因为在表达式的左侧将没有两个要比较的数字。