本文目录一览:
- 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函数,但是要考虑多音字,怎么处理多音字的问题?
首先获取到人名之后将人名转换为字符串,
获取字符串的下标,比较完首字母之后对比第二个,
第三个