Skip to main content
黑话筒

Javascript 排序问题

我们买了个web表格控件, 点击表头可以排序的, 对于英文没问题, 是按照英文字母顺序排的, 但是中文就乱了. 不按拼音顺序, 也不按笔画顺序.

后来在网上找了一下, 发现Javascript的sort方法对于中文是按照内码来排的.

如果想让其按拼音来排, 需要用localCompare

原始顺序是: 猪zhu-1,我wo-2,啊a-3,你ni-4,他ta-5,地di-6

Javascript本身的sort排序后是: 他ta-5,你ni-4,啊a-3,地di-6,我wo-2,猪zhu-1

按照拼音排序结果是: 啊a-3,地di-6,你ni-4,他ta-5,我wo-2,猪zhu-1

具体请看代码

function mysort() {
  var s = "猪zhu-1,我wo-2,啊a-3,你ni-4,他ta-5,地di-6";
  alert("The original is:\n" + s);

  var a = s.split(",");
  a.sort();
  alert("This is wrong:\n" + a);

  a.sort(function(c1, c2) {
    return c1.localeCompare(c2);
  });
  alert("This is right:\n" + a);
}