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
相关推荐
一颗花生米。3 小时前
深入理解JavaScript 的原型继承
java·开发语言·javascript·原型模式
学习使我快乐013 小时前
JS进阶 3——深入面向对象、原型
开发语言·前端·javascript
bobostudio19953 小时前
TypeScript 设计模式之【策略模式】
前端·javascript·设计模式·typescript·策略模式
勿语&4 小时前
Element-UI Plus 暗黑主题切换及自定义主题色
开发语言·javascript·ui
黄尚圈圈4 小时前
Vue 中引入 ECharts 的详细步骤与示例
前端·vue.js·echarts
浮华似水5 小时前
简洁之道 - React Hook Form
前端
正小安7 小时前
如何在微信小程序中实现分包加载和预下载
前端·微信小程序·小程序
_.Switch9 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一路向前的月光9 小时前
Vue2中的监听和计算属性的区别
前端·javascript·vue.js