JS数组对象——中文按照首字母排序(分组)sort()、localeCompare()

这篇具有很好参考价值的文章主要介绍了JS数组对象——中文按照首字母排序(分组)sort()、localeCompare()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

往期同类文章

文章内容 文章链接
JS数组对象——根据日期进行排序按照时间进行升序或降序排序 https://blog.csdn.net/XSL_HR/article/details/128579840?spm=1001.2014.3001.5501
JS数组对象——英文按照首字母进行排序 https://blog.csdn.net/XSL_HR/article/details/128579936?spm=1001.2014.3001.5501

场景复现

排序在项目中非常实用,出现频率极高,尤其是后台管理系统,需要我们对大量的数据进行展示、处理、操作。一般都是从后台获取到数组对象,然后根据其中的一个属性对数据进行升序或者降序的处理。

下面将举例详细介绍——中文根据首字母进行排序

中文的排序有两种方法:

  • 利用sort和localCompare方法来实现;
  • 从外部引入方法,利用方法进行排序以及分组

根据中文首字母排序

1、首字母基础排序

排序用到的方法: localeCompare()方法返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同。(排序方法在往期的文章中都有介绍)

(1)数组内容

// 根据id值的首字母进行排序
let arr = [
         {id:'sh',name:'上海'},
         {id:'bj',name:'北京'},
         {id:'gz',name:'广东'},
         {id:'sz',name:'深圳'}
      ]
// 根据中文首字母排序
let arr1 = ['上海','北京','广州','深圳']

(2)关键代码

// 根据id值的首字母排序
arr.sort((a, b) => a['id'].localeCompare(b['id']))
console.log(arr)
// 根据中文的首字母排序
arr1.sort((a, b) => a.localeCompare(b))
console.log(arr1)

(3)控制台排序结果
js汉字按字母顺序排序,JavaScript,javascript,前端,typescript
js汉字按字母顺序排序,JavaScript,javascript,前端,typescript

2、排序并且分组

在前端开发过程中,按照汉字首字母排序分组是很常见的操作,比如联系人列表引入第三方插件
在项目所在文件夹新建终端,输入以下代码引入插件前提是已经安装了node.js

npm i --save jian-pinyin

在需要使用到的vue页面引入

import Pinyin from 'js-pinyin'

封装一个具有排序和分组功能的函数(具体方法参考以下 sortByFirstLetter 代码块)

function sortByFirstLetter(origin) {
    // 将目标数据进行排序
    origin = origin.sort((pre, next) => Pinyin.getFullChars(pre).localeCompare(Pinyin.getFullChars(next)))
    const newArr = []
    origin.map(item => {
        // 取首字母
        const key = Pinyin.getFullChars(item).charAt(0)
        const index = newArr.findIndex(subItem => subItem.key === key)
        if (index < 0) {
            newArr.push({
                key: key,
                list: [item]
            })
        } else {
            newArr[index].list.push(item)
        }
    })
    return newArr
}

数组内容

const originData = [
        '上饶', '上海', '深圳', '广州', '武汉', '十堰', '天津', '北京'
    ]
console.log(sortByFirstLetter(originData)) // 控制台打印结果

排序后的结果:(既完成了排序,也完成了分组文章来源地址https://www.toymoban.com/news/detail-777627.html

[
    { key: 'B', list: ['北京'] },
    { key: 'G', list: ['广州'] },
    { key: 'S', list: ['上海', '上饶', '深圳', '十堰'] },
    { key: 'T', list: ['天津'] },
    { key: 'W', list: ['武汉'] }
]

下期文章将介绍如何将数字格式(2022-12-22)的时间转换为汉字格式(2022年12月22日)的日期,甚至证书中所用的全汉字格式(二〇二二年十二月二十二日)日期~
感兴趣的小伙伴可以订阅本专栏,方便后续了解学习~
觉得这篇文章有用的小伙伴们可以点赞➕收藏➕关注哦~

到了这里,关于JS数组对象——中文按照首字母排序(分组)sort()、localeCompare()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【c语言】对结构体数组按照某项规则进行排序

            这是基于qsort()函数进行的简单排序。(附带其他类型的数组使用qsort()进行的排序) 目录 一、qsort()函数 二、compare()函数 1.结构体数组 1)升序实现 2)降序实现 2.整型数组 为什么不直接返回 ab(a )? 如果就是想用 ab(a )返回?  1)升序实现 2)降序实现 3.浮点

    2024年02月03日
    浏览(45)
  • 【第42天】Arrays.sort 与 Collections.sort 应用 | 整形数组与集合的排序

    本文已收录于专栏 🌸《Java入门一百练》🌸

    2024年02月02日
    浏览(44)
  • 数组排序 sort() 方法 (映射对含有大小写的字符串进行排序)

    结论先行: sort() 方法: 用于对数组元素进行 排序 ,默认升序。如果指明了参数,那数组会按照 比较函数 的返回值进行排序。    sort() 方法比较两个值时,将值发送给比较函数,根据返回的(负、零、正)值对值进行排序。 举例,a 和 b 两个将要被比较的元素: 如果 a-

    2024年04月25日
    浏览(46)
  • 【JS】js数组分组,javascript实现数组的按属性分组

    项目代码中有很多时候需要按一定的条件实现按属性分组 你可以使用JavaScript的 Array.prototype.reduce() 方法来将数组分组。这是一种高级的方法,它可以将数组元素组合成一个单值。在这种情况下,你可以使用它来把数组元素放到一个对象中,其中对象的键是分组的条件,值是所

    2023年04月08日
    浏览(50)
  • Java创建一个长度为10的数组,利用Arrays.sort(), 为数组元素排序

    程序要求:1)创建一个整型数组,数组的长度为10.                     2)给数组元素赋值,要求乱序。                   3)利用fori循环将数组元素依次输出。                      4)利用Arrays.sort(), 为数组元素排序                   5)采用增加for循环将

    2024年02月08日
    浏览(52)
  • JAVA的sort用法详解(二维数组排序,List<>排序,lambada表达式,自定义类型排序)

    目录 前言: 一维数组降序: 方法1.Comparator接口: 代码实现: 方法2.Collections.reverseOrder(): 代码实现:  二维数组排序: 代码如下: List排序: 代码如下: 自定义类型比较排序: 按照年龄逆序排序: 按照姓名升序排序: lambada表达式简写: 一维数组逆序代码: 二维数组排

    2024年04月09日
    浏览(65)
  • 原生JS之sort排序方法详解

    在JavaScript中排序主要用到的api就是sort了,但是使用sort有几个坑需要注意,让我们一起来看看 sort() 方法用于对 数组 的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。 默认排序顺序为按字典升序。 在不使用参数时,sort使用的是字典排序 如果数组中元素都是

    2024年02月03日
    浏览(35)
  • 使用Collections.sort方法来对自定义对象进行排序

    Collections.sort方法可以用来对自定义对象进行排序。要实现这一点,需要在调用该方法时传入一个比较器,该比较器用于指定如何比较对象中的值。 举个例子,假设有一个自定义对象Person,其中包含姓名和年龄两个属性,我们可以使用以下代码对该对象列表进行按年龄排序:

    2024年02月13日
    浏览(46)
  • 【C++实战小项目】通讯录(四) 冒泡排序通过string首字母排序多个数组

    🧛‍♂️iecne个人主页: : iecne的学习日志 💡每天 关注 iecne的作品,一起进步 💪一起学习,必看iecne 🐳希望大家多多支持🥰一起进步呀! 首先制作一款通讯录我们可以将它分为以下部分 增加联系人 删除联系人 查找联系人 修改联系人 打印通讯录 排序通讯录 这一期我们

    2024年01月19日
    浏览(51)
  • 【第43天】sort 的复杂运用 | 对二维数组与结构体实现自定义排序

    本文已收录于专栏 🌸《Java入门一百练》🌸

    2024年01月17日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包