可以使用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":["麻雀","貓"]}]是不是很神奇,通過這個就可以寫一個電話薄,像現在手機上面的,通過人名來進行分組、排序,之后再通過循環和布局就可以實現電話薄的功能。后續會將電話薄的代碼寫出來。
新聞熱點
疑難解答