react-native按照汉字首字母排序

问题讨论详情:https://github.com/facebook/react-native/issues/12597

 

问题描述:

JS中有一个String的内置函数:String.prototype.localeCompare()返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同。

1 a.nickName.localeCompare(b.nickName, 'zh-Hans-CN', {sensitivity: 'accent'})

react-native环境下,此函数的返回值在IOS上正常,在Androiddebug模式下正常,在Androidrelease模式下有误。问题原因是AndroidJavaScriptCore引擎的版本导致的问题。

 

解决方案:

推荐字典:https://github.com/sxei/pinyinjs

 

用字典先获取汉字首字母,再用localeCompare按照英文首字母排序。

示例用法:

1 require('../api/pinyinJs/dict/pinyin_dict_firstletter')
2 require('../api/pinyinJs/pinyinUtil')
3 
4 ...
5 lockData[0].sort((a, b) => {
6   return pinyinUtil.getFirstLetter(a.nickName).localeCompare(pinyinUtil.getFirstLetter(b.nickName))
7 })
8 ...

 

 

posted @ 2019-12-10 20:47  哈佬  阅读(1077)  评论(0编辑  收藏  举报