我正试图比较两个字符串按字母顺序排序的目的。例如,我想有一个像if('aaaa' < 'ab')这样的布尔检查。我试过了,但它没有给我正确的结果,所以我想这不是正确的语法。如何在jquery或Javascript中实现这一点?
if('aaaa' < 'ab')
vpfxa7rd1#
你确实说过比较是为了排序。然后我建议使用localeCompare:
"a".localeCompare("b");
它返回-1,因为"a" < "b",1或0,否则,就像您需要的Array.prototype.sort()一样请记住,排序是依赖于区域设置的。例如,在德语中,ä是a的变体,因此"ä".localeCompare("b", "de-DE")返回-1。在瑞典语中,ä是字母表中最后的字母之一,因此"ä".localeCompare("b", "sv-SE")返回1。如果没有localeCompare的第二个参数,则使用浏览器的区域设置。根据我的经验,这从来不是我想要的,因为这样它的排序方式就会与服务器不同,服务器对所有用户都有一个固定的区域设置。此外,如果您正在排序的内容包含数字,您可能需要:
-1
"a" < "b"
1
0
ä
a
"ä".localeCompare("b", "de-DE")
"ä".localeCompare("b", "sv-SE")
localeCompare
"a5b".localeCompare("a21b", undefined, { numeric: true })
这将返回-1,并将5识别为小于21的数字。如果没有{ numeric: true },则返回1,因为“2”排序在“5”之前。在许多实际应用中,用户希望“a5 b”出现在“a21 b”之前。
{ numeric: true }
pgvzfuti2#
让我们来看看一些测试用例-尝试在JS控制台中运行以下表达式:
"a" < "b" "aa" < "ab" "aaa" < "aab"
全部返回true。JavaScript逐个字符比较字符串,字母表中“a”位于“b”之前-因此小于。你的情况是这样的-1 .“aaaa”〈“aB”比较前两个“a”字符-都相等,让我们移动到下一个字符。2 .“aaaa”〈“aB“比较第二个字符“a”和“B”-哎呀!“a”在“b”之前。返回true。
vs91vp4v3#
只要记住像“x”〉“X”这样的字符串比较是区分大小写的
"aa" < "ab" //true "aa" < "Ab" //false
您可以使用.toLowerCase()进行比较,不区分大小写。
.toLowerCase()
xfyts7mz4#
假设我们有一个对象数组,如:
{ name: String }
然后我们可以对数组进行如下排序:
array.sort((a, b) => { if (a.name === b.name) return 0; return a.name > b.name ? 1 : -1; });
注意:小心大写字母。您可能需要根据目的将字符串转换为小写。
yhived7q5#
"a".localeCompare("b")实际上应该返回-1,因为a在b之前排序http://www.w3schools.com/jsref/jsref_localecompare.asp
"a".localeCompare("b")
b
5条答案
按热度按时间vpfxa7rd1#
你确实说过比较是为了排序。然后我建议使用localeCompare:
它返回
-1
,因为"a" < "b"
,1
或0
,否则,就像您需要的Array.prototype.sort()一样请记住,排序是依赖于区域设置的。例如,在德语中,
ä
是a
的变体,因此"ä".localeCompare("b", "de-DE")
返回-1
。在瑞典语中,ä
是字母表中最后的字母之一,因此"ä".localeCompare("b", "sv-SE")
返回1
。如果没有
localeCompare
的第二个参数,则使用浏览器的区域设置。根据我的经验,这从来不是我想要的,因为这样它的排序方式就会与服务器不同,服务器对所有用户都有一个固定的区域设置。此外,如果您正在排序的内容包含数字,您可能需要:
这将返回-1,并将5识别为小于21的数字。如果没有
{ numeric: true }
,则返回1,因为“2”排序在“5”之前。在许多实际应用中,用户希望“a5 b”出现在“a21 b”之前。pgvzfuti2#
让我们来看看一些测试用例-尝试在JS控制台中运行以下表达式:
全部返回true。
JavaScript逐个字符比较字符串,字母表中“a”位于“b”之前-因此小于。
你的情况是这样的-
1 .“aaaa”〈“aB”
比较前两个“a”字符-都相等,让我们移动到下一个字符。
2 .“aaaa”〈“aB“
比较第二个字符“a”和“B”-哎呀!“a”在“b”之前。返回true。
vs91vp4v3#
只要记住像“x”〉“X”这样的字符串比较是区分大小写的
您可以使用
.toLowerCase()
进行比较,不区分大小写。xfyts7mz4#
假设我们有一个对象数组,如:
然后我们可以对数组进行如下排序:
注意:小心大写字母。您可能需要根据目的将字符串转换为小写。
yhived7q5#
"a".localeCompare("b")
实际上应该返回-1
,因为a
在b
之前排序http://www.w3schools.com/jsref/jsref_localecompare.asp