我正在尝试按字母顺序比较2个字符串以进行排序。例如,我想要像这样的布尔检查if('aaaa' < 'ab')。我试过了,但是没有给我正确的结果,所以我猜那不是正确的语法。如何在jquery或Javascript中执行此操作?
'aaaa' < 'ab'返回true。<!-错误的编辑以删除投票->
我正在尝试按字母顺序比较2个字符串以进行排序。例如,我想要像这样的布尔检查if('aaaa' < 'ab')。我试过了,但是没有给我正确的结果,所以我猜那不是正确的语法。如何在jquery或Javascript中执行此操作?
'aaaa' < 'ab'返回true。<!-错误的编辑以删除投票->
Answers:
让我们看一些测试用例-尝试在JS控制台中运行以下表达式:
"a" < "b"
"aa" < "ab"
"aaa" < "aab"
全部返回true。
JavaScript会逐个字符地比较字符串,并且字母中的“ a”在“ b”之前,因此小于。
就您而言,它的工作原理如下:
1。“ 一个 AAA”< “ 一 B”
比较前两个“ a”字符-全部相等,然后移至下一个字符。
2。“一个一个 AA” <“一个b ”
比较第二个字符“ a”和“ b”-哦!“ a”位于“ b”之前。返回true。
"a" < "b" === true "a" < "B" === false。
您确实说比较是出于排序目的。然后我建议:
"a".localeCompare("b");
它返回-1因为"a" < "b",1或0以其他方式,像你需要Array.prototype.sort()
请记住,排序取决于语言环境。例如,德语ä是的变体a,所以"ä".localeCompare("b", "de-DE")return -1。在瑞典语中,ä是字母中的最后一个字母之一,因此"ä".localeCompare("b", "se-SE")return 1。
如果不使用的第二个参数localeCompare,则使用浏览器的语言环境。根据我的经验,这永远不是我想要的,因为那样排序将不同于服务器,服务器对所有用户都具有固定的语言环境。
"aa".localeCompare("ab")对于我能想到的任何语言环境,==“ aa” .localeCompare(“ Ab”))甚至在旧版本的IE中也可以使用。应该是公认的答案!
"a".localeCompare("b")实际上应该返回,-1因为a排序之前b