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

sam*_*old 87 javascript jquery

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

Pet*_*rch 115

你说比较是为了排序目的.然后我建议:

"a".localeCompare("b");
Run Code Online (Sandbox Code Playgroud)

它返回-1因为"a" < "b",10以其他方式,像你需要Array.prototype.sort()

请记住,排序依赖于语言环境.例如德语,ä是变体a,所以"ä".localeCompare("b", "de-DE")返回-1.在瑞典语中,ä是字母表中的最后一个字母,所以"ä".localeCompare("b", "se-SE")返回1.

如果没有第二个参数localeCompare,则使用浏览器的语言环境.根据我的经验,这绝不是我想要的,因为它将与服务器排序不同,服务器具有适用于所有用户的固定语言环境.

  • +1也值得一提的是,这也适用于案例(`"aa".localeCompare("ab")`=="aa".localeCompare("Ab")对于我能想到的任何语言环境)甚至在旧的IE的版本.应该是接受的答案! (4认同)

Lix*_*Lix 102

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

"a" < "b"

"aa" < "ab"

"aaa" < "aab"
Run Code Online (Sandbox Code Playgroud)

一切都归于真实.

JavaScript逐字符地比较字符串,字母表中的"a"在"b"之前 - 因此小于.

在你的情况下,它的工作原理如下 -

1." 一个 AAA"< " B"

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

2."一个一个 AA" <"一个b "

将第二个字符"a"与"b"进行比较 - 呐喊!"a"出现在"b"之前.返回true.

  • 需要记住的是首都.`"a"<"b"=== true``"a"<"B"=== false`. (8认同)
  • 令人印象深刻的是,这是内置的内置! (4认同)
  • 是的,它按 asciibetes 排序 (3认同)
  • @chrisjshields - 哦哇 - 我以前从未听过这个词......我喜欢它! (3认同)
  • 关于特殊字符的讨论,如Č,č,Š,š,Ž,ž,请参阅http://stackoverflow.com/questions/6909126/javascript-sort-with-unicode (2认同)

Sie*_*elu 29

请记住,像"x">"X"这样的字符串比较是区分大小写的

"aa" < "ab" //true
"aa" < "Ab" //false
Run Code Online (Sandbox Code Playgroud)

您可以使用.toLowerCase()比较而不区分大小写.


小智 10

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

{ name: String }
Run Code Online (Sandbox Code Playgroud)

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

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

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


小智 7

"a".localeCompare("b")应该实际上-1a以前的种类返回b

http://www.w3schools.com/jsref/jsref_localecompare.asp