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

时间:2012-04-17 20:00:50

标签: javascript jquery

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

5 个答案:

答案 0 :(得分:104)

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

"a".localeCompare("b");

-1"a" < "b"1返回0,否则就像Array.prototype.sort()需要的那样

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

如果没有localeCompare的第二个参数,则使用浏览器的区域设置。根据我的经验,这绝不是我想要的,因为它的排序方式与服务器不同,后者对所有用户都有固定的语言环境。

答案 1 :(得分:96)

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

"a" < "b"

"aa" < "ab"

"aaa" < "aab"

全部返回true。

JavaScript逐字符地比较字符串和&#34; a&#34;来之前&#34; b&#34;在字母表中 - 因此小于。

在你的情况下,它的工作方式如下 -

  

1。 &#34;的 AAA&#34; &LT; &#34;的 B&#34;

比较前两个&#34; a&#34;字符 - 全部相等,让我们移动到下一个字符。

  

2。 &#34;的 AA&#34; &LT; #&34;的 B'/强>&#34;

比较第二个字符&#34; a&#34;反对&#34; b&#34; - 呐喊! &#34;&#34;来之前&#34; b&#34;。返回true。

答案 2 :(得分:26)

请记住字符串比较,例如“x”&gt; “X”区分大小写

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

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

答案 3 :(得分:5)

"a".localeCompare("b")实际应该返回-1,因为a排序b

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

答案 4 :(得分:1)

让我们说我们有一个对象数组:

{ name : String }

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

array.sort(function(a, b) {
    var orderBool = a.name > b.name;
    return orderBool ? 1 : -1;
});

注意:请注意大写字母,由于您的目的,您可能需要将字符串强制转换为小写。