为什么JavaScript中的字符串排序如此奇怪?

时间:2013-10-16 16:26:03

标签: javascript

var users = ["mocca_community", "ban2", "6a", "user_c1", "vad", "vote4music", "xbox_live"];

function sort(a, b) {
  return a > b;
}

console.log(
  users.sort(sort)
);

演示:http://jsbin.com/Inemiga/2/edit

我在Chrome,IE9,Safari,FireFox和Node中进行了测试。只有FireFox显示正确排序的字符串。是什么原因?

3 个答案:

答案 0 :(得分:8)

更改为:

function sort(a, b) {
  return a.localeCompare(b);
}

不区分大小写:

function sort(a, b) {
  return a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase());
}

答案 1 :(得分:5)

因为您从自定义搜索功能返回一个布尔值。您需要返回-101

function sort(a, b) {
  if (a == b) { return 0; }
  else if (a > b) { return 1; }
  return -1;
}

答案 2 :(得分:2)

排序方法return 1如果a更大,-1 b更大,0如果相等。

尝试这种排序方法。

function sort(a, b) {
  if (a > b) return 1;
  if (a < b) return -1;
  return 0;
}