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

具体请看代码

HTML+Cheetah语言: Javascript 排序问题
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=“http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8″ />
<title>Sort Test</title>
</head>

<body>
<script type=“text/javascript”>
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);
}
</script>
<input type=“button” value=“test” onclick=“mysort()” />

</body>
</html>

  • Share/Bookmark

2 Comments

  1. Posted 2009/02/04 at 11:32

    后来我终于发现为什么wordpress贴代码缩进会出问题了
    因为wordpress自带的编辑器是tinyMCE,其可视化编辑模式在firefox下有“吃掉空格”的bug
    直接贴html代码或者在IE下用可视化编辑器都没事…

    [Reply]

  2. Posted 2009/02/04 at 12:51
    iworm Says:

    我重新贴了一下代码, 现在好了.
    我原来也是在html里直接贴的代码, 估计后来文章被我在可视化编辑器里编辑过, 所以空格没了.

    [Reply]

Post a Comment

Your email is never shared.

(required)
(required)
您的留言是我不断成长的动力!(Spammer们请团成一个团,圆润的离开吧。否则我见一条删一条!!)