JS-中文排序、英文排序(大小写可混合)

一、前言

适用场景:

  • 通讯录
  • 名称排序
  • 商品排序
  • ...

二、中文排序

  • localeCompare()方法,用给定语言环境比较两个字符串,默认使用当前语言环境比较。
  • 'zh' 表示主语言标记,代表中文。
  • 'Hans' 是脚本子标记,表示简体汉字。
  • 'CN' 是区域子标记,表示中国。
javascript 复制代码
let nameList = [
        {
            name: "张三",
            initial: "z",
        },
        {
            name: "李四",
            initial: "l",
        },
        {
            name: "彭于晏",
            initial: "p",
        },
        {
            name: "我",
            initial: "w",
        },
    ]
    // localeCompare()方法,用给定语言环境比较两个字符串,默认使用当前语言环境比较。
    // 'zh' 表示主语言标记,代表中文。
    // 'Hans' 是脚本子标记,表示简体汉字。
    // 'CN' 是区域子标记,表示中国。
    console.log(nameList);
    nameList.sort((a, b) => a.initial.localeCompare(b.initial, "zh-Hans-CN"));
    console.log(nameList); // [李》彭》我》张]  结果大概长这样。。。简单理解一下

三、英文排序

  • localeCompare()方法,用给定语言环境比较两个字符串,默认使用当前语言环境比较。
  • 'en' 表示主语言标记,代表英文。
  • 大小写同时存在时,小写优于大写
bash 复制代码
let nameStr = 'gtrbAvrtbBahCfgoiew'
    // 转数组
    let nameList = nameStr.split('')
    // en为英文,a与b的顺序是按照字母表的顺序来排序的,此处可扩展数组属性
    nameList.sort((a, b) => a.localeCompare(b, 'en'))
    console.log(nameList);
    // ['a', 'A', 'b', 'b', 'B', 'C', 'e', 'f', 'g', 'g', 'h', 'i', 'o', 'r', 'r', 't', 't', 'v', 'w']
    // 转字符串
    console.log(nameList.join(''));
    // aAbbBCefgghiorrttvw
相关推荐
LCG元7 小时前
STM32实战:基于STM32F103的Bootloader设计与IAP在线升级
javascript·stm32·嵌入式硬件
超级无敌暴龙兽9 小时前
和我一起刷面试题呀
前端·面试
wzl202612139 小时前
企业微信定时群发技术实现与实操指南(原生接口+工具落地)
java·运维·前端·企业微信
小码哥_常9 小时前
Robots.txt:互联网爬虫世界的“隐形规则”
前端
小码哥_常9 小时前
Android开发神器:AndroidAutoSize,轻松搞定屏幕适配
前端
前端一小卒9 小时前
前端工程师的全栈焦虑,我用 60 天治好了
前端·javascript·后端
不停喝水9 小时前
【AI+Cursor】 告别切图仔,拥抱Vibe Coding: AI + Cursor 开启多模态全栈新纪元 (1)
前端·人工智能·后端·ai·ai编程·cursor
coderyi11 小时前
LLM Agent 浅析
前端·javascript·人工智能
我叫黑大帅11 小时前
TypeScript 6.0 弃用选项错误 TS5101 解决方法
javascript·后端·面试