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
相关推荐
Liamhuo26 分钟前
2.1.7 network-浏览器-前端浏览器数据存储
前端·浏览器
洋葱头_27 分钟前
vue3项目不支持低版本的android,如何做兼容
前端·vue.js
前端小书生36 分钟前
React 组件渲染
前端·react.js
sjd_积跬步至千里41 分钟前
CSS实现文字横向无限滚动效果
前端
维他AD钙43 分钟前
前端基础避坑:3 个实用知识点的简单用法
前端
journs44 分钟前
micro-app微前端styled-components CSSOM模式 应用切换样式丢失问题
前端
呼啦啦小魔仙1 小时前
elpis项目DSL设计分享
前端
李李记1 小时前
别让 “断字” 毁了 Canvas 界面!splitByGrapheme 轻松搞定非拉丁文本换行
前端·canvas
来金德瑞1 小时前
快速掌握 ProseMirror 的核心概念
前端
ygria1 小时前
样式工程化:如何实现Design System
前端·前端框架·前端工程化