当前位置:网站首页>JS according to the Chinese Alphabet (province) or according to the English alphabet - Za sort &az sort

JS according to the Chinese Alphabet (province) or according to the English alphabet - Za sort &az sort

2022-07-06 21:09:00 viceen

js Sort according to the first letter of Chinese characters ( Province sorting ) or Sort according to English initials ——z~a Sort & a~z Sort

Example 1

let arr = [" Guizhou Province ", " Jiangsu Province ", " Jiangxi Province ", " Zhejiang Province ", " Sichuan Province ", " Anhui Province ", " Shandong Province ", " Shanghai ", " Hubei province ", " Fujian Province ", " Liaoning Province ", " Shanxi Province ", " Hebei Province ", " Qinghai Province ",

" Heilongjiang Province ", " Inner Mongolia Autonomous Region ", " Beijing ", " Henan province ", " Hunan province ", " Guangdong province, ", " Shaanxi Province ", " Jilin Province ", " Yunnan Province ", " Xinjiang Uygur Autonomous Region ",

" Chongqing ", " tianjin ", " Gansu Province ", " Ningxia Hui Autonomous Region ", " Hainan ", " Guangxi Zhuang Autonomous Region ", " Tibet Autonomous Region "];

let sortArray = arr.sort(function (str1, str2) {
    
  return str1.localeCompare(str2, 'zh');
});

Print the results

[' Anhui Province ', ' Beijing ', ' Chongqing ', ' Fujian Province ', ' Gansu Province ', ' Guangdong province, ', ' Guangxi Zhuang Autonomous Region ', ' Guizhou Province ', ' Hainan ', ' Hebei Province ', ' Henan province ', ' Heilongjiang Province ', ' Hubei province ', ' Hunan province ', ' Jilin Province ', ' Jiangsu Province ', ' Jiangxi Province ', ' Liaoning Province ', ' Inner Mongolia Autonomous Region ', ' Ningxia Hui Autonomous Region ', ' Qinghai Province ', ' Shandong Province ', ' Shanxi Province ', ' Shaanxi Province ', ' Shanghai ', ' Sichuan Province ', ' tianjin ', ' Tibet Autonomous Region ', ' Xinjiang Uygur Autonomous Region ', ' Yunnan Province ', ' Zhejiang Province ']

Example 2

Realize the sorting of Chinese according to the first letter of Pinyin

js Provides sort() Method to sort the data in the array , But it only works for English , At this time, you need to customize the sorting rules

[' Zhang San ',' Li Si ',' Wang Wu '].sort((a, b) => a.localeCompare(b, 'zh-Hans-CN', {
    sensitivity: 'accent'}))

Output

[' Li Si ',' Wang Wu ',' Zhang San ']
  • sort() It defines a function to specify the sorting rules ,localeCompare() Method returns a number , Indicates whether the reference string is before or after the sort order , Or the same as the given string in the sort order ,zh-Hans-CN Is the sorting rule of simplified Chinese ,sensotivity Is sensitivity , Include baseaccentcasevariant These sensitivities

example 1- Pure array

var array = [' wuhan ', ' Beijing ', ' Shanghai ', ' tianjin '];
var resultArray = array.sort(
    function compareFunction(param1, param2) {
    
        return param1.localeCompare(param2,"zh");
    }
);
console.log(resultArray);

example 2- Array objects

// Data to sort 
let data = [
        {
    chinese: ' zeiss ', english: 'Chase'},
        {
    chinese: ' Allen ', english: 'Allen'},    
        {
    chinese: ' Zola ', english: 'Zola'},
        {
    chinese: ' Baker, ', english: 'Baker'},    
        {
    chinese: ' Berg ', english: 'Berg'},    
        {
    chinese: ' Fitch ', english: 'Fitch'},    
        {
    chinese: ' Dean ', english: 'Dean'},    
        {
    chinese: ' Earl ', english: 'Earle'},        
        {
    chinese: ' Henry ', english: 'Henry'},
        
    ]
 
    // Sort according to the first letter of Chinese characters 
    // Use the arrow function 
    //【 notes 】localeCompare()  yes js Built-in methods 
   data.sort((a, b)=> b.chinese.localeCompare(a.chinese, 'zh')); //z~a  Sort 
   data.sort((a, b)=> a.chinese.localeCompare(b.chinese, 'zh')); //a~z  Sort  
     console.log(data);
 
    // Sort according to English   Compare   The first letter ASCLL code 
     console.log(data[0].english.charCodeAt(0));
    ata.sort((a, b) => b.english.charCodeAt(0) - a.english.charCodeAt(0)); //z~a  Sort 
    data.sort((a, b) => a.english.charCodeAt(0) - b.english.charCodeAt(0)); //a~z  Sort  
    console.log(data);

attach :localeCompare() Method

js Provides a string comparison method localeCompare(), This method returns a number to indicate that a reference string and a comparison string are sorted first , After or the same . This method is basically not used alone , Most of the time it is used with string sorting .

grammar
stringObject.localeCompare(target)
Return value

Figures that illustrate the results of the comparison .

  • If stringObject Less than target, be localeCompare() Back to less than 0 Number of numbers .
  • If stringObject Greater than target, The method returns greater than 0 Number of numbers .
  • If two strings are equal , Or according to the local collation , This method returns 0.
Method call

1、 Separate calls to methods : Simply compare two strings , Just check the return value .

var str = 'aaa',
	strCom = 'bbb',
	strCom2 = 'aaa';
str.localeCompare(strCom); //-1
strCom.localeCompare(str); //1
str.localeCompare(strCom2); //0

2、 With the call of sorting : This method is rarely used to compare strings alone , In most cases, it is used in conjunction with the sorting of strings .

ar strList = ['cc', 'ee', 'ca', 'aa'];
 
strList.sort((a, b) => {
    
	return a.localeCompare(b);
});
console.log(strList);   //["aa", "ca", "cc", "ee"]
explain

hold < and > When the operator is applied to a string , They only use characters Unicode Encoding comparison string , Regardless of local sorting rules . The order generated in this way is not necessarily correct . for example , In Spanish , Which character “ch” Usually appears as a letter “c” and “d” Sort by characters between .

localeCompare() Method to compare strings , Consider the default local collation .ECMAscript The standard does not specify how to make local specific comparisons , It only stipulates that the function adopts the sorting rules provided by the underlying operating system .

 from z~a
 
    // Sort according to the first letter of Chinese characters 
    // Use the arrow function 
    //【 notes 】localeCompare()  yes js Built-in methods 
     data.sort((a, b)=> b.chinese.localeCompare(a.chinese, 'zh')); //z~a  Sort 
 from a~z
 
     data.sort((a, b)=> a.chinese.localeCompare(b.chinese, 'zh')); //a~z  Sort  
 According to the English initials ASCLL Code to sort 
 
 from z~a
 
    // Sort according to English   Compare   The first letter ASCLL code 
    // Use the arrow function 
    data.sort((a, b) => b.english.charCodeAt(0) - a.english.charCodeAt(0)); //z~a  Sort 
 
 
 from a~z
 
    data.sort((a, b) => a.english.charCodeAt(0) - b.english.charCodeAt(0)); //a~z  Sort 
原网站

版权声明
本文为[viceen]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207061250445362.html