当前位置:网站首页>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 排序
边栏推荐
- 什么是RDB和AOF
- Tips for web development: skillfully use ThreadLocal to avoid layer by layer value transmission
- document.write()的用法-写入文本——修改样式、位置控制
- 愛可可AI前沿推介(7.6)
- Distributed ID
- 如何实现常见框架
- PHP saves session data to MySQL database
- ICML 2022 | Flowformer: 任务通用的线性复杂度Transformer
- Word bag model and TF-IDF
- Value of APS application in food industry
猜你喜欢
[DIY]自己设计微软MakeCode街机,官方开源软硬件
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
全网最全的新型数据库、多维表格平台盘点 Notion、FlowUs、Airtable、SeaTable、维格表 Vika、飞书多维表格、黑帕云、织信 Informat、语雀
[DIY]如何制作一款個性的收音機
The mail command is used in combination with the pipeline command statement
[200 opencv routines] 220 Mosaic the image
Reference frame generation based on deep learning
[MySQL] trigger
15million employees are easy to manage, and the cloud native database gaussdb makes HR office more efficient
[DIY]如何制作一款个性的收音机
随机推荐
Application layer of tcp/ip protocol cluster
Swagger UI tutorial API document artifact
【mysql】游标的基本使用
User defined current limiting annotation
Pat 1078 hashing (25 points) ⼆ times ⽅ exploration method
Manifest of SAP ui5 framework json
2022菲尔兹奖揭晓!首位韩裔许埈珥上榜,四位80后得奖,乌克兰女数学家成史上唯二获奖女性
Leetcode hot topic Hot 100 day 32: "minimum coverage substring"
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,
【微信小程序】运行机制和更新机制
#yyds干货盘点#重新梳理箭头函数的this
What is the difference between procedural SQL and C language in defining variables
Infrared thermometer based on STM32 single chip microcomputer (with face detection)
SAP Fiori应用索引大全工具和 SAP Fiori Tools 的使用介绍
R語言可視化兩個以上的分類(類別)變量之間的關系、使用vcd包中的Mosaic函數創建馬賽克圖( Mosaic plots)、分別可視化兩個、三個、四個分類變量的關系的馬賽克圖
基于深度学习的参考帧生成
使用.Net驱动Jetson Nano的OLED显示屏
爱可可AI前沿推介(7.6)
Math symbols in lists
Distributed ID