使用localeCompare按照汉字拼音排序的结果不太准怎么处理?

kinghome 2013-05-06 12:13:34

var citys = ['北京-b','上海-s','广州-g','深圳-s','南京-n','苏州-s','杭州-h','济南-j','青岛-q','武汉-w','沈阳-sh','成都-ch','天津-t','重庆-ch','西安-x','郑州-zh','石家庄-sh','长沙-ch','长春-ch','合肥-h','福州-f'];
function sortRule(a,b) {
return a.localeCompare(b);

}
window.onload = function(){
alert(citys.sort(sortRule));
}


//结果:北京-b,成都-ch,福州-f,广州-g,杭州-h,合肥-h,济南-j,南京-n,青岛-q,上海-s,深圳-s,沈阳-sh,石家庄-sh,苏州-s,天津-t,武汉-w,西安-x,长春-ch,长沙-ch,郑州-zh,重庆-ch

我希望能按照拼音的首字母【a~z】来排序...
...全文
934 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2013-05-06
  • 打赏
  • 举报
回复
function sortRule(a, b) {
  return a.replace(/.*\-(.+)$/, '$1') > b.replace(/.*\-(.+)$/, '$1')
}
kinghome 2013-05-06
  • 打赏
  • 举报
回复

var citys = ['北京-b','上海-s','广州-g','深圳-s','南京-n','苏州-s','杭州-h','济南-j','青岛-q','武汉-w','沈阳-sh','成都-ch','天津-t','重庆-ch','西安-x','郑州-zh','石家庄-sh','长沙-ch','长春-ch','合肥-h','福州-f'];
    function sortRule(a,b) {
        return a.replace(/.*\-(.+)$/, '$1') > b.replace(/.*\-(.+)$/, '$1');        
    }
        window.onload = function(){
              alert(citys.sort(sortRule));
         }
在safari浏览器上得不到正确的排序。。。 firefox可以
天际的海浪 2013-05-06
  • 打赏
  • 举报
回复
你需要自己弄个字库了,以前看过一个6000字不到15kb拼音字库
xuzuning 2013-05-06
  • 打赏
  • 举报
回复
需要有 汉字拼音对照表,精华区中有相关的帖子
kinghome 2013-05-06
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
只有gb2312一级字库的汉字是按拼音组织的 所以你当按汉字内码排序时,并不都符合拼音顺序
那肿么办?没有办法了么?
似梦飞花 2013-05-06
  • 打赏
  • 举报
回复
用substring取最后一位取出那个字母后 return 字母相减试试
xuzuning 2013-05-06
  • 打赏
  • 举报
回复
只有gb2312一级字库的汉字是按拼音组织的 所以你当按汉字内码排序时,并不都符合拼音顺序
kinghome 2013-05-06
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
function sortRule(a, b) {
  return a.replace(/.*\-(.+)$/, '$1') > b.replace(/.*\-(.+)$/, '$1')
}
谢谢。 但是当我把每个元素的“-b”等此类字符去掉后就不正确了? “-b”这类字符是我加上去看看排序结果是否正确的

87,995

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧