JS

您所在的位置:网站首页 js按字母顺序排序怎么排序 JS

JS

2024-01-02 11:04| 来源: 网络整理| 查看: 265

编码顺序是指按照一定规则对数据进行编码的顺序,字典排序是指按照字典序对字符串进行排序的方法。在编码顺序相同的情况下,字典排序可以用来比较字符串的大小。

下面具体说一下,看个数组:

const names = ['李晓华','吴小希','菜徐困','海王','赵丽云','孙小明','只因']

这里有一个汉字作为数组,怎么进行升序来排序? 这个时候我们可以使用sort函数,不给他传参数的时候默认按照字符的顺序来排序

names.sort() console.log(names); //  ['只因','吴小希', '孙小明', '李晓华', '海王', '菜徐困', '赵丽云']

按照拼音排序的话应该是菜徐困在最前面,所以这个sort默认并不是我们想要的结果 sort默认的是字符顺序,所谓的字符顺序其实就是ASCll码顺序,我们可以通过.charCodeAt(0)查看字符的编码

console.log('菜'.charCodeAt(0)); // 33756 console.log('吴'.charCodeAt(0)); // 21556

如果按照编码排序是没问题,但是这里的汉字排序并不是按照编码的顺序,我们想按照拼音的顺序进行排序 也就是字典顺序,网上也有许多的库,将汉字拆分成拼音,不过用起来比较麻烦。Js中已经提供一个API,来得到这个字典顺序。

localeCompare

localeCompare是JavaScript中用来比较字符串的方法,它可以按照本地化规则进行比较,支持多种语言和字符集。localeCompare方法返回一个数字,表示两个字符串的比较结果,具体规则如下:

如果字符串A小于字符串B,返回负数; 如果字符串A等于字符串B,返回0; 如果字符串A大于字符串B,返回正数。 他可以与另外一个字符进行比较,例如: console.log('菜'.localeCompare('吴')); // -1 console.log('赵'.localeCompare('赵')); // 0 console.log('吴'.localeCompare('菜')); // 1

如果说这个字符在字典里出现的数字比后面的字符大,那么就等于-1,如果出现在他之前,那么就是1。如果链各个相等的话就为0, 这里就可以比较出字典排序了

names.sort((a,b)=>a.localeCompare(b)) console.log(names); // ['菜徐困', '海王', '李晓华', '孙小明', '吴小希', '赵丽云', '只因']

使用场景:对于文字排序的时候是比较有用的,例如后台对人员名称的升降序等等



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3