-3
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.js 中进行了测试。并且只有 FireFox 显示正确排序的字符串。是什么原因?

4

3 回答 3

8

改成:

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

不区分大小写:

function sort(a, b) {
  return a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase());
}
于 2013-10-16T16:31:05.010 回答
5

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

function sort(a, b) {
  if (a == b) { return 0; }
  else if (a > b) { return 1; }
  return -1;
}
于 2013-10-16T16:28:27.090 回答
2

排序方法应该return 1ifa更大,-1ifb更大并且0它们是否相等。

试试这种排序方法。

function sort(a, b) {
  if (a > b) return 1;
  if (a < b) return -1;
  return 0;
}
于 2013-10-16T16:30:21.693 回答