js数组中英文按首字母排序

var arr = ['Edison','白百合','Angelbaby','陈冠希','Duncan'];
//原数组首字符分别是 E B A C D

//想得到排序后的数组(首字符排序 A B C D E)
['Angelbaby','白百合','陈冠希','Duncan','Edison']

阅读 15.3k
5 个回答

你这样很难排序的,至少要带一个标识。
像这种格式:

var arr = [{E:'Edison'},{B:'白百合'},{A:'Angelbaby'},{C:'陈冠希'},{D:'Duncan'}];

核心是汉字转换拼音,但是由于汉字的排序不规律,一般需要一个庞大的字典库,浏览器加载不现实,所以一般拼音转换需要依赖后台。

GITHUB上找到一个很短小的拼音转换工具,利用浏览器的汉字排序方法,加上同音字的拼音字典,节省了大量的字典,很取巧,如果你不需要考虑兼容性,而且在中文环境下,可以考虑下,GZIP我看了才4.1K。

https://github.com/creeperyan...

楼上那种带标识的方法比较好,如果你非要中英文混在一起比较那你得现有一个获取汉字对应拼音的库,并且你要考虑多音字问题

你这个问题不是一两句能说清楚的了
首先拆开看你要排列的对象有两个,一个是英文名字,一个是中文名字
英文的好处理,ABCD都能截取,中文就复杂了,设计转码需要引用转码的jq库
原理就是每个中文都有对应的ASCII码,也能对应的转成Unicode码,最后操作排序的是这些转码。
给你个地址吧希望对你有帮助:
http://www.cnblogs.com/alex-w...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题