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

gijlo24d  于 2023-05-05  发布在  Java
关注(0)|答案(5)|浏览(123)

我正试图比较两个字符串按字母顺序排序的目的。例如,我想有一个像if('aaaa' < 'ab')这样的布尔检查。我试过了,但它没有给我正确的结果,所以我想这不是正确的语法。如何在jquery或Javascript中实现这一点?

vpfxa7rd

vpfxa7rd1#

你确实说过比较是为了排序。然后我建议使用localeCompare

"a".localeCompare("b");

它返回-1,因为"a" < "b"10,否则,就像您需要的Array.prototype.sort()一样
请记住,排序是依赖于区域设置的。例如,在德语中,äa的变体,因此"ä".localeCompare("b", "de-DE")返回-1。在瑞典语中,ä是字母表中最后的字母之一,因此"ä".localeCompare("b", "sv-SE")返回1
如果没有localeCompare的第二个参数,则使用浏览器的区域设置。根据我的经验,这从来不是我想要的,因为这样它的排序方式就会与服务器不同,服务器对所有用户都有一个固定的区域设置。
此外,如果您正在排序的内容包含数字,您可能需要:

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

这将返回-1,并将5识别为小于21的数字。如果没有{ numeric: true },则返回1,因为“2”排序在“5”之前。在许多实际应用中,用户希望“a5 b”出现在“a21 b”之前。

pgvzfuti

pgvzfuti2#

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

"a" < "b"

"aa" < "ab"

"aaa" < "aab"

全部返回true。
JavaScript逐个字符比较字符串,字母表中“a”位于“b”之前-因此小于。
你的情况是这样的-
1 .“aaaa”〈“aB”
比较前两个“a”字符-都相等,让我们移动到下一个字符。
2 .“aaaa”〈“aB
比较第二个字符“a”和“B”-哎呀!“a”在“b”之前。返回true。

vs91vp4v

vs91vp4v3#

只要记住像“x”〉“X”这样的字符串比较是区分大小写的

"aa" < "ab" //true
"aa" < "Ab" //false

您可以使用.toLowerCase()进行比较,不区分大小写。

xfyts7mz

xfyts7mz4#

假设我们有一个对象数组,如:

{ name: String }

然后我们可以对数组进行如下排序:

array.sort((a, b) => {
  if (a.name === b.name) return 0;
  return a.name > b.name ? 1 : -1;
});

注意:小心大写字母。您可能需要根据目的将字符串转换为小写。

yhived7q

yhived7q5#

"a".localeCompare("b")实际上应该返回-1,因为ab之前排序
http://www.w3schools.com/jsref/jsref_localecompare.asp

相关问题