按字母顺序比较 2 个字符串以进行排序

2022-08-30 04:24:13

我试图按字母顺序比较2个字符串以进行排序。例如,我想要一个布尔检查,如.我试过了,但它没有给我正确的结果,所以我想这不是正确的语法。如何在jquery或Javascript中执行此操作?if('aaaa' < 'ab')


答案 1

您确实说比较是为了排序目的。然后我建议使用localeCompare代替:

"a".localeCompare("b");

它从 返回,或者其他方式,就像您需要 Array.prototype.sort()-1"a" < "b"10

请记住,排序与区域设置相关。例如,在德语中,是 的变体,因此返回 。在瑞典语中,是字母表中的最后几个字母之一,因此返回 。äa"ä".localeCompare("b", "de-DE")-1ä"ä".localeCompare("b", "se-SE")1

如果没有 第二个参数 to ,则使用浏览器的区域设置。根据我的经验,这从来都不是我想要的,因为这样它就会与服务器不同,服务器为所有用户提供了固定的区域设置。localeCompare

此外,如果要排序的内容包含数字,则可能需要:

"a5b".localeCompare("a21b", undefined, { numeric: true })

这将返回 -1,认识到 5 作为一个数字小于 21。如果没有,则返回 1,因为“2”在“5”之前排序。在许多实际应用中,用户期望“a5b”出现在“a21b”之前。{ numeric: true }


答案 2

让我们看一些测试用例 - 尝试在JS控制台中运行以下表达式:

"a" < "b"

"aa" < "ab"

"aaa" < "aab"

全部返回 true。

JavaScript逐个字符地比较字符串,字母表中“a”在“b”之前 - 因此小于。

在你的情况下,它的工作原理是这样的 -

1 .“aaaa” < “ab”

比较前两个“a”字符 - 全部相等,让我们移动到下一个字符。

2 .“aaaa” < “ab

比较第二个字符“a”和“b” - 哎呀!“a”在“b”之前。返回 true。