当前位置: 首页 > news >正文

js字符串对比之localeCompare()方法-对字符串进行排序——大于0-升序、小于0-降序 对el-table的列进行排序sort-change

js字符串对比之localeCompare()方法-对字符串进行排序——大于0-升序、小于0-降序 & 对el-table的列进行排序sort-change

js提供了字符串的对比方法localeCompare(),该方法返回的是一个数字用来表示一个参考字符串和对比字符串是排序在前,在后或者相同。该方法基本不单独使用,大部分时间是配合字符串排序使用的。

1、语法

string.localeCompare(targetString,locales,options);

参数:

  • targetString:对比字符串

  • locales:用来表示一种或多种语言或区域的一个符合 BCP 47 标准的字符串或一个字符串数组,如:‘zh’

  • options:是单个活对象组成的多个参数,主要的可以到MDN去查

2、返回值

返回值:是一个数字,目前的主流浏览器都返回的是1、0、-1三个值,但是也有其他情况,所以不可以用绝对的值等于1、-1这种去判断返回的结果

  • 返回值大于0-升序:说明当前字符串string大于对比字符串targetString

  • 返回值小于0-降序:说明当前字符串string小于对比字符串targetString

  • 返回值等于0:说明当前字符串string等于对比字符串targetString

3、应用

3.1、单独使用

方法的单独调用:就是简单的去对比两个字符串,查看其返回值就好。

var str = 'aaa',
	strCom = 'bbb',
	strCom2 = 'aaa';
str.localeCompare(strCom); //-1
strCom.localeCompare(str); //1
str.localeCompare(strCom2); //0
3.2、配合排序使用

配合排序的调用:该方法用来单独比较字符串的情况比较少,大多数情况下是配合字符串的排序下使用的。

ar strList = ['cc', 'ee', 'ca', 'aa'];
 
strList.sort((a, b) => {
	return a.localeCompare(b);
});
console.log(strList);   //["aa", "ca", "cc", "ee"]

4、对el-table中的列进行排序

<template>
    <el-table
      ref="filterTable"
      :data="tableData"
      border
      :max-height="maxHeight"
      :highlight-current-row="true"
      @row-dblclick="rowDblClick"
      @sort-change="changeTableSort"
              >
      <el-table-column
        fixed
        label="序号"
        type="index"
        width="45"
      />
      <el-table-column
        label="检查规格号"
        prop="ruleId"
        min-width="105"
        :sortable="'custom'"
        show-overflow-tooltip
      />    
    </el-table>
</template>

<script>
export default{
 methods:{
    //排序触发事件
    changeTableSort({order}) {
      if (order === 'ascending') {
        this.tableData.sort((a, b)=> a.ruleId.localeCompare(b.ruleId, 'zh')); //a~z 排序
      } if (order === 'descending') {
        this.tableData.sort((a, b)=> b.ruleId.localeCompare(a.ruleId, 'zh')); //z~a 排序
      }
    },         
  }
}
</script>

5、复杂场景排序应用

排序效果

在这里插入图片描述

1

// 语言代码
const langCodeList = Object.freeze([
  { label: '大陆', value: 'CHI' },
  { label: '港澳', value: 'CHT' },
  { label: '英文', value: 'ENG' },
  { label: '葡文 ', value: 'POR' },
]);

2

var nameList = [
{NAME_CLASS:3,LANG_CODE:'CHI'},{NAME_CLASS:6,LANG_CODE:'BHI'},     {NAME_CLASS:7,LANG_CODE:'CHT'},{NAME_CLASS:1,LANG_CODE:'POR'},{NAME_CLASS:4,LANG_CODE:'CHI'},{NAME_CLASS:8,LANG_CODE:'CHT'},{NAME_CLASS:10,LANG_CODE:'CHI'},{NAME_CLASS:3,LANG_CODE:'ENG'},{NAME_CLASS:5,LANG_CODE:'CHI'}
]

         
nameList.sort((a, b)=> {
  //  1、LANG_CODE中文名称展示在前
  if ( a.NAME_CLASS === b.NAME_CLASS){
    return a.LANG_CODE.localeCompare(b.LANG_CODE);
  }
  //  2、NAME_CLASS排列优先级1>3>5>6>7>8>10>4
  if ( a.NAME_CLASS > b.NAME_CLASS  && b.NAME_CLASS !== 4 || a.NAME_CLASS === 4 ) {
    return 2;
  } else {
    return -2;
  }
});
console.log('排序后',nameList);

相关文章:

  • Vue开发环境安装
  • springboot小型命题系统毕业设计源码011508
  • 61-70==c++知识点
  • 一文快速上手 Nacos 注册中心+配置中心!
  • 云扩RPA携手中联教育引领财务机器人教学创新
  • 入阿里P6?最少啃完这本阿里最新Java多线程编程手册,建议收藏
  • 【毕业设计】深度学习人脸表情识别系统 - python OpenCV
  • 基于HTML仿华为手机网站电商项目的设计与实现
  • 【Java基础】方法重写、修饰符、权限修饰符及final、static关键字
  • 【C++】之const
  • Stream 的使用,我觉得使用它是非常方便的
  • Tomcat安装及配置教程
  • 图像也是一门语言?微软提出19亿参数的超大通用模型BEIT-3,刷榜多个CV和多模态任务!
  • 如何利用博途PLC PID_Compact 进行PID闭环仿真(一阶对象传递函数)
  • 查题公众号搭建免费教程
  • 2017-08-04 前端日报
  • 30秒的PHP代码片段(1)数组 - Array
  • Apache的80端口被占用以及访问时报错403
  • Create React App 使用
  •  D - 粉碎叛乱F - 其他起义
  • Fundebug计费标准解释:事件数是如何定义的?
  • gitlab-ci配置详解(一)
  • nodejs调试方法
  • V4L2视频输入框架概述
  • 安装python包到指定虚拟环境
  • 程序员最讨厌的9句话,你可有补充?
  • 给第三方使用接口的 URL 签名实现
  • 机器学习 vs. 深度学习
  • 利用jquery编写加法运算验证码
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前端性能优化--懒加载和预加载
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (c语言)strcpy函数用法
  • (Oracle)SQL优化技巧(一):分页查询
  • (Ruby)Ubuntu12.04安装Rails环境
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (已解决)什么是vue导航守卫
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .NET : 在VS2008中计算代码度量值
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET 常见的偏门问题
  • .NET 反射的使用
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET连接数据库方式
  • ::before和::after 常见的用法
  • @RequestMapping 的作用是什么?
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [2016.7 day.5] T2
  • [APIO2012] 派遣 dispatching
  • [boost]使用boost::function和boost::bind产生的down机一例