javacript按照汉语拼音排序

以前做了一个需求,要求按照人名的拼音进行排序,然后通过oracle的NLS_SORT参数在后台进行了排序,然后将结果返回给前端。现在想看看如果前端对字符串按照汉语拼音进行排序该怎么做呢?遂查找资料,将方法记录如下。

['张三','李四','王五'].sort((a, b) => a.localeCompare(b, 'zh-Hans-CN', {sensitivity: 'accent'}))

localeCompare函数的语法如下:

referenceStr.localeCompare(compareString[, locales[, options]])

参数
compareString用来比较的字符串
locales可选。 用来表示一种或多种语言或区域的一个符合 BCP 47 标准的字符串或一个字符串数组。

zh-Hans-CN (Chinese written using the Simplified script as used in mainland China)

返回一个数字表示是否 引用字符串 在排序中位于 比较字符串 的前面,后面,或者二者相同。

  • 当 **引用字符串 **在 **比较字符串 **前面时返回 -1
  • 当 引用字符串 在 **比较字符串 **后面时返回 1
  • 相同时返回 0

切勿依赖于 -1 或 1 这样特定的返回值。不同浏览器之间(以及不同浏览器版本之间)返回的正负数的值各有不同,因为W3C规范中只要求返回值是正值和负值,而没有规定具体的值。一些浏览器可能返回-2或2或其他一些负的、正的值。

参考

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare
https://segmentfault.com/q/1010000002546028

posted @ 2018-02-02 23:18  ZiYangZhou  阅读(271)  评论(0编辑  收藏  举报