当前位置:网站首页>js 根据汉字首字母排序(省份排序) 或 根据英文首字母排序——za排序 & az排序
js 根据汉字首字母排序(省份排序) 或 根据英文首字母排序——za排序 & az排序
2022-07-06 12:51:00 【viceen】
js 根据汉字首字母排序(省份排序) 或 根据英文首字母排序——z~a排序 & a~z排序
示例1
let arr = ["贵州省", "江苏省", "江西省", "浙江省", "四川省", "安徽省", "山东省", "上海", "湖北省", "福建省", "辽宁省", "山西省", "河北省", "青海省",
"黑龙江省", "内蒙古自治区", "北京", "河南省", "湖南省", "广东省", "陕西省", "吉林省", "云南省", "新疆维吾尔自治区",
"重庆", "天津", "甘肃省", "宁夏回族自治区", "海南省", "广西壮族自治区", "西藏自治区"];
let sortArray = arr.sort(function (str1, str2) {
return str1.localeCompare(str2, 'zh');
});
打印结果
['安徽省', '北京', '重庆', '福建省', '甘肃省', '广东省', '广西壮族自治区', '贵州省', '海南省', '河北省', '河南省', '黑龙江省', '湖北省', '湖南省', '吉林省', '江苏省', '江西省', '辽宁省', '内蒙古自治区', '宁夏回族自治区', '青海省', '山东省', '山西省', '陕西省', '上海', '四川省', '天津', '西藏自治区', '新疆维吾尔自治区', '云南省', '浙江省']
示例2
实现中文按照拼音首字母排序
js提供了sort()方法来对数组内的数据进行排序,但是只是对英文有作用,这个时候需要自定义排序的规则
['张三','李四','王五'].sort((a, b) => a.localeCompare(b, 'zh-Hans-CN', {
sensitivity: 'accent'}))
输出
['李四','王五','张三']
- sort()里面定义了一个函数来指定排序的规则,localeCompare()方法返回一个数字,指示引用字符串是在排序顺序之前还是之后,或者与排序顺序中的给定字符串相同,
zh-Hans-CN是简体中文的排序规则,sensotivity是灵敏度,包括base、accent、case、variant这几种灵敏度
实例1-纯数组
var array = ['武汉', '北京', '上海', '天津'];
var resultArray = array.sort(
function compareFunction(param1, param2) {
return param1.localeCompare(param2,"zh");
}
);
console.log(resultArray);
实例2-数组对象
//要排序的数据
let data = [
{
chinese: '蔡司', english: 'Chase'},
{
chinese: '艾伦', english: 'Allen'},
{
chinese: '左拉', english: 'Zola'},
{
chinese: '贝克', english: 'Baker'},
{
chinese: '伯格', english: 'Berg'},
{
chinese: '菲奇', english: 'Fitch'},
{
chinese: '迪安', english: 'Dean'},
{
chinese: '厄尔', english: 'Earle'},
{
chinese: '亨利', english: 'Henry'},
]
//根据汉字首字母排序
//使用箭头函数
//【注】localeCompare() 是js内置方法
data.sort((a, b)=> b.chinese.localeCompare(a.chinese, 'zh')); //z~a 排序
data.sort((a, b)=> a.chinese.localeCompare(b.chinese, 'zh')); //a~z 排序
console.log(data);
//根据英文排序 比较 首字母ASCLL码
console.log(data[0].english.charCodeAt(0));
ata.sort((a, b) => b.english.charCodeAt(0) - a.english.charCodeAt(0)); //z~a 排序
data.sort((a, b) => a.english.charCodeAt(0) - b.english.charCodeAt(0)); //a~z 排序
console.log(data);
附:localeCompare() 方法
js提供了字符串的对比方法localeCompare(),该方法返回的是一个数字用来表示一个参考字符串和对比字符串是排序在前,在后或者相同。该方法基本不单独使用,大部分时间是配合字符串排序使用的。
语法
stringObject.localeCompare(target)
返回值
说明比较结果的数字。
- 如果 stringObject 小于 target,则 localeCompare() 返回小于 0 的数。
- 如果 stringObject 大于 target,则该方法返回大于 0 的数。
- 如果两个字符串相等,或根据本地排序规则没有区别,该方法返回 0。
方法的调用
1、方法的单独调用:就是简单的去对比两个字符串,查看其返回值就好。
var str = 'aaa',
strCom = 'bbb',
strCom2 = 'aaa';
str.localeCompare(strCom); //-1
strCom.localeCompare(str); //1
str.localeCompare(strCom2); //0
2、配合排序的调用:该方法用来单独比较字符串的情况比较少,大多数情况下是配合字符串的排序下使用的。
ar strList = ['cc', 'ee', 'ca', 'aa'];
strList.sort((a, b) => {
return a.localeCompare(b);
});
console.log(strList); //["aa", "ca", "cc", "ee"]
说明
把 < 和 > 运算符应用到字符串时,它们只用字符的 Unicode 编码比较字符串,而不考虑当地的排序规则。以这种方法生成的顺序不一定是正确的。例如,在西班牙语中,其中字符 “ch” 通常作为出现在字母 “c” 和 “d” 之间的字符来排序。
localeCompare() 方法提供的比较字符串的方法,考虑了默认的本地排序规则。ECMAscript 标准并没有规定如何进行本地特定的比较操作,它只规定该函数采用底层操作系统提供的排序规则。
从z~a
//根据汉字首字母排序
//使用箭头函数
//【注】localeCompare() 是js内置方法
data.sort((a, b)=> b.chinese.localeCompare(a.chinese, 'zh')); //z~a 排序
从a~z
data.sort((a, b)=> a.chinese.localeCompare(b.chinese, 'zh')); //a~z 排序
根据英文首字母的ASCLL码进行排序
从z~a
//根据英文排序 比较 首字母ASCLL码
//使用箭头函数
data.sort((a, b) => b.english.charCodeAt(0) - a.english.charCodeAt(0)); //z~a 排序
从a~z
data.sort((a, b) => a.english.charCodeAt(0) - b.english.charCodeAt(0)); //a~z 排序
边栏推荐
- C # use Oracle stored procedure to obtain result set instance
- HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
- js中,字符串和数组互转(一)——字符串转为数组的方法
- 知识图谱之实体对齐二
- What is the problem with the SQL group by statement
- 【论文解读】用于白内障分级/分类的机器学习技术
- Opencv learning example code 3.2.3 image binarization
- 2017 8th Blue Bridge Cup group a provincial tournament
- 自定义限流注解
- C language games - three chess
猜你喜欢

15 millions d'employés sont faciles à gérer et la base de données native du cloud gaussdb rend le Bureau des RH plus efficace
![[DIY]自己设计微软MakeCode街机,官方开源软硬件](/img/a3/999c1d38491870c46f380c824ee8e7.png)
[DIY]自己设计微软MakeCode街机,官方开源软硬件

Deployment of external server area and dual machine hot standby of firewall Foundation

##无yum源安装spug监控

Comprehensive evaluation and recommendation of the most comprehensive knowledge base management tools in the whole network: flowus, baklib, jiandaoyun, ones wiki, pingcode, seed, mebox, Yifang cloud,

Data Lake (VIII): Iceberg data storage format
![[wechat applet] operation mechanism and update mechanism](/img/cf/58a62a7134ff5e9f8d2f91aa24c7ac.png)
[wechat applet] operation mechanism and update mechanism

Pycharm remote execution

Implementation of packaging video into MP4 format and storing it in TF Card

Intel 48 core new Xeon run point exposure: unexpected results against AMD zen3 in 3D cache
随机推荐
拼多多败诉,砍价始终差0.9%一案宣判;微信内测同一手机号可注册两个账号功能;2022年度菲尔兹奖公布|极客头条
##无yum源安装spug监控
The biggest pain point of traffic management - the resource utilization rate cannot go up
2022 refrigeration and air conditioning equipment installation and repair examination contents and new version of refrigeration and air conditioning equipment installation and repair examination quest
2022 nurse (primary) examination questions and new nurse (primary) examination questions
如何实现常见框架
OneNote 深度评测:使用资源、插件、模版
OAI 5G NR+USRP B210安装搭建
Notes - detailed steps of training, testing and verification of yolo-v4-tiny source code
js中,字符串和数组互转(一)——字符串转为数组的方法
Deployment of external server area and dual machine hot standby of firewall Foundation
知识图谱构建流程步骤详解
【论文解读】用于白内障分级/分类的机器学习技术
[DIY]如何制作一款個性的收音機
R语言可视化两个以上的分类(类别)变量之间的关系、使用vcd包中的Mosaic函数创建马赛克图( Mosaic plots)、分别可视化两个、三个、四个分类变量的关系的马赛克图
Intel 48 core new Xeon run point exposure: unexpected results against AMD zen3 in 3D cache
基于STM32单片机设计的红外测温仪(带人脸检测)
Common doubts about the introduction of APS by enterprises
Three schemes of SVM to realize multi classification
'class file has wrong version 52.0, should be 50.0' - class file has wrong version 52.0, should be 50.0