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
相关推荐
梦65020 小时前
React 简介
前端·react.js·前端框架
一只小阿乐20 小时前
react 中的判断显示
前端·javascript·vue.js·react.js·react
光影少年20 小时前
useMemo 和 React.memo区别
前端·react.js·前端框架
小沐°20 小时前
React-页码组件
前端·javascript·react.js
零一科技20 小时前
Vue3学习第三课: ref 与 reactive 选择指南
前端·vue.js
余杭子曰21 小时前
播放状态与播放序列的关系(999篇一线博客第107篇)
前端
e***U8201 天前
前端路由懒加载实现,React.lazy与Suspense
前端·react.js·前端框架
诸葛亮的芭蕉扇1 天前
抓图巡检-底图支持绘制
开发语言·前端·javascript
来碗盐焗星球1 天前
yalc,yyds!
前端
熊猫比分站1 天前
让电竞数据实时跳动:Spring Boot 后端 + Vue 前端的完美融合实践
前端·vue.js·spring boot