Javascript 中文排序

在做项目的时候经常全有用到排序的功能,例如Mysql等数据库都带有排序的函数。

在前端开发中,Javascript的数组也带有sort函数,只是sort只对英文字母才能排序。

下面来讲一下今天的主角:localeCompare()

localeCompare是一个属于String类型的子函数,作用是用本地特定的顺序来比较两个字符串。

语法:

1
referenceStr.localeCompare(compareString[, locales[, options]]);

返回值:
如果referenceStr小于compareString则返回值小于0;

如果referenceStr大于compareString则返回值大于0;

如果referenceStr等于compareString则返回值等于0;

利用这一特性,我们可以使用Array的sort函数结合localeCompare函数来进行汉字排序。

在进行排序前,需要把排序的汉字转成单个文字的数组。

1
2
3
4
5
6
7
var arr = ["测","试","汉","字","排","序"];
arr.sort(function(a,b){
   return a.localeCompare(b);
});

//输出结果:
//["测", "汉", "排", "试", "序", "字"]

注意:
在用汉字进行排序的时候,得到的结果并不一定是你想要的结果。因为汉字很多,其中有一部分是多音字,例如:“长”字等。