当前位置:网站首页>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 language operators
- use. Net analysis Net talent challenge participation
- Swagger UI教程 API 文档神器
- Common doubts about the introduction of APS by enterprises
- Aiko ai Frontier promotion (7.6)
- C language games - minesweeping
- OSPF多区域配置
- How to implement common frameworks
- 1500萬員工輕松管理,雲原生數據庫GaussDB讓HR辦公更高效
- 2022 Guangdong Provincial Safety Officer C certificate third batch (full-time safety production management personnel) simulation examination and Guangdong Provincial Safety Officer C certificate third
猜你喜欢
None of the strongest kings in the monitoring industry!
【OpenCV 例程200篇】220.对图像进行马赛克处理
Interviewer: what is the internal implementation of ordered collection in redis?
Study notes of grain Mall - phase I: Project Introduction
(work record) March 11, 2020 to March 15, 2021
硬件开发笔记(十): 硬件开发基本流程,制作一个USB转RS232的模块(九):创建CH340G/MAX232封装库sop-16并关联原理图元器件
每个程序员必须掌握的常用英语词汇(建议收藏)
数据湖(八):Iceberg数据存储格式
基于STM32单片机设计的红外测温仪(带人脸检测)
Hardware development notes (10): basic process of hardware development, making a USB to RS232 module (9): create ch340g/max232 package library sop-16 and associate principle primitive devices
随机推荐
Swagger UI tutorial API document artifact
7、数据权限注解
[wechat applet] operation mechanism and update mechanism
拼多多败诉,砍价始终差0.9%一案宣判;微信内测同一手机号可注册两个账号功能;2022年度菲尔兹奖公布|极客头条
Manifest of SAP ui5 framework json
Notes - detailed steps of training, testing and verification of yolo-v4-tiny source code
Kubernetes learning summary (20) -- what is the relationship between kubernetes and microservices and containers?
ICML 2022 | Flowformer: 任务通用的线性复杂度Transformer
What are RDB and AOF
2022菲尔兹奖揭晓!首位韩裔许埈珥上榜,四位80后得奖,乌克兰女数学家成史上唯二获奖女性
document.write()的用法-写入文本——修改样式、位置控制
APS taps home appliance industry into new growth points
知识图谱构建流程步骤详解
快过年了,心也懒了
Intel 48 core new Xeon run point exposure: unexpected results against AMD zen3 in 3D cache
PHP online examination system version 4.0 source code computer + mobile terminal
Opencv learning example code 3.2.3 image binarization
Activiti global process monitors activitieventlistener to monitor different types of events, which is very convenient without configuring task monitoring in acitivit
硬件开发笔记(十): 硬件开发基本流程,制作一个USB转RS232的模块(九):创建CH340G/MAX232封装库sop-16并关联原理图元器件
use. Net analysis Net talent challenge participation