本文目錄一覽:
- 1、js實現漢字轉拼音功能
- 2、js中如何實現輸入漢字的拼音聲母出現對應的漢字?
- 3、javascript怎樣中文名字按拼音字母排序?
- 4、javascript中文按照拼音首字母排序,如何實現?
- 5、jquery或javascipte實現標籤內文字按拼音首字母排序
- 6、JavaScript中 人名按照拼音排序,可以用localeCompare函數,但是要考慮多音字,怎麼處理多音字的問題?
js實現漢字轉拼音功能
在做酒店項目時選擇城市頁面需要按照首字母分類並排序,用到了漢字轉拼音的功能,最終使用了下面這種方法,在此記錄一下。
js中如何實現輸入漢字的拼音聲母出現對應的漢字?
和google的輸入提示一個道理,幾乎所有Ajax入門書都講這個。
簡單的說,輸入框的onchange事件的響應函數裡面增加一個xmlhttp請求,
伺服器響應請求返回提示更新頁面。
但是細節上考慮要多複雜有多複雜,
首先就是拼音到漢字,你需要找輸入法的源代碼,
然後就是緩存,資料庫,安全性等等……
方案二:純js
用js寫一個輸入法……
大致思路是頁面用按音序排列的編碼,如GB2312,然後以音序映射到字元編碼上
javascript怎樣中文名字按拼音字母排序?
resultValue=[ ‘武漢’ , ‘北京’ , ‘上海’ , ‘天津’ ] ;
resultValue= resultValue.sort(
function compareFunction(param1,param2){
return param1.localeCompare(param2);
}
);
resultValue結果為:
[ ‘北京’ , ‘上海’ , ‘天津’ ,’武漢’ ] ;
javascript中文按照拼音首字母排序,如何實現?
中文拼音排序一直都是很有趣的一個問題。推薦使用這個函數 String.prototype.localeCompare(),鏈接 MDN。首先用 localeCompare 試下拼音排序
var array = [‘武漢’, ‘北京’, ‘上海’, ‘天津’];
array.sort(
function compareFunction(param1, param2) {
return param1.localeCompare(param2);
}
);
array // [“北京”, “上海”, “天津”, “武漢”]
然後根據 26 個英文字母分組排序,函數如下,
function pySegSort(arr) {
if(!String.prototype.localeCompare)
return null;
var letters = “*abcdefghjklmnopqrstwxyz”.split(”);
var zh = “阿八嚓噠妸發旮哈譏咔垃痳拏噢妑七呥扨它穵夕丫帀”.split(”);
var segs = [];
var curr;
letters.forEach(function(item,i){
curr = {letter: item, data:[]};
arr.forEach(function(item2){
if((!zh[i-1] || zh[i-1].localeCompare(item2) = 0) item2.localeCompare(zh[i]) == -1) {
curr.data.push(item2);
}
});
if(curr.data.length) {
segs.push(curr);
curr.data.sort(function(a,b){
return a.localeCompare(b);
});
}
});
return segs;
}
測試:
pySegSort([“我”,”不”,”懂”,”愛”,”啊”,”按”,”已”,”呀”,”選”,”縣”])
結果:
[{“letter”:”a”,”data”:[“啊”,”愛”,”按”]},{“letter”:”b”,”data”:[“不”]},{“letter”:”d”,”data”:[“懂”]},{“letter”:”w”,”data”:[“我”]},{“letter”:”x”,”data”:[“縣”,”選”]},{“letter”:”y”,”data”:[“呀”,”已”]}]
var arr = [“張三”,”李四”,”王五”,”阿三”];
document.write(arr+””);
arr.sort(function(a,b){
return a.localeCompare(b);
});
document.write(arr);
定義和用法:
用本地特定的順序來比較兩個字元串。
語法:
stringObject.localeCompare(target)
參數描述:
target 要以本地特定的順序與 stringObject 進行比較的字元串。
返回值:
說明比較結果的數字。如果 stringObject 小於 target,則 localeCompare() 返回小於 0 的數。如果 stringObject 大於 target,則該方法返回大於 0 的數。如果兩個字元串相等,或根據本地排序規則沒有區別,該方法返回 0。
說明:
把 和 運算符應用到字元串時,它們只用字元的 Unicode 編碼比較字元串,而不考慮當地的排序規則。以這種方法生成的順序不一定是正確的。例如,在西班牙語中,其中字元 「ch」 通常作為出現在字母 「c」 和 「d」 之間的字元來排序。
localeCompare() 方法提供的比較字元串的方法,考慮了默認的本地排序規則。ECMAscript 標準並沒有規定如何進行本地特定的比較操作,它只規定該函數採用底層操作系統提供的排序規則。
參考資料
百度知道.百度知道[引用時間2018-1-5]
jquery或javascipte實現標籤內文字按拼音首字母排序
jq:
var wrap = $(‘div’);
var html =
wrap.find(‘a’)
.map(function(){//獲取文字
return $.trim($(this).text())
})
.toArray()//轉換jq為數組
.sort(function(a , b){
return a.localeCompare(b)//按照順序排序
})
.map(function(txt){//拼接html
return ‘a’ + txt + ‘/a’;
})
.join(”);
wrap.html(html);//輸出
js:
function toArray(nodes){
return [].slice.call(nodes , 0);
}
var wrap = document.querySelector(‘div’);
var links = wrap.querySelectorAll(‘a’);
var html =
toArray(links)
.map(function(el , i){//讀取文字
return (el.innerText || el.textContent).trim();
})
.sort(function(a , b){
return a.localeCompare(b)//按照順序排序
})
.map(function(txt){//組合html
return ‘a’ + txt + ‘/a’;
})
.join(”);
wrap.innerHtml = html;//輸出
JavaScript中 人名按照拼音排序,可以用localeCompare函數,但是要考慮多音字,怎麼處理多音字的問題?
首先獲取到人名之後將人名轉換為字元串,
獲取字元串的下標,比較完首字母之後對比第二個,
第三個
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/303034.html