localeCompare() 方法的使用

2/10/2017来源:心得技巧人气:3605

可以使用localeCompare() 方法来实现中文按照拼音排序,方法相当简单,代码如下(下面的代码可直接复制在浏览器的F12控制台中运行):

var array = ['白鸽', '麻雀', '大象', '狗', '猫', "鸡"]; array = array.sort( function compareFunction(item1, item2) { return item1.localeCompare(item2); } );

结果显示为:

["白鸽", "大象", "狗", "鸡", "麻雀", "猫"]

至于原理则是上篇( javaScript localeCompare() 方法)说的。 而且可以通过如下代码实现中文按照拼音排序,并且可以将中文按照a,b,c,d……进行区分。代码如下:

function pySegSort(arr,empty) { if(!String.PRototype.localeCompare) return null; var letters = "*abcdefghjklmnopqrstwxyz".split(''); var zh = "阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀".split(''); var segs = []; var curr; $.each(letters, function(i){ curr = {letter: this, data:[]}; $.each(arr, function() { if((!zh[i-1] || zh[i-1].localeCompare(this) <= 0) && this.localeCompare(zh[i]) == -1) { curr.data.push(this); } }); if(empty || curr.data.length) { segs.push(curr); curr.data.sort(function(a,b){ return a.localeCompare(b); }); } }); return segs; } console.log(JSON.stringify(pySegSort(['白鸽', '麻雀', '大象', '狗', '猫', "鸡"])));

运行结果:

[{"letter":"b","data":["白鸽"]},{"letter":"d","data":["大象"]},{"letter":"g","data":["狗"]},{"letter":"j","data":["鸡"]},{"letter":"m","data":["麻雀","猫"]}]

是不是很神奇,通过这个就可以写一个电话薄,像现在手机上面的,通过人名来进行分组、排序,之后再通过循环和布局就可以实现电话薄的功能。后续会将电话薄的代码写出来。