解决vue elementUI中table里数字、字母、中文混合排序问题


Posted in Javascript onJanuary 07, 2020

1.使用场景

使用elementUI中的table时,给包含数字字母中文的名称等字段排序

例如:数字(0->9)->大写字母(A->Z)->小写字母(a->z)->中文拼音(a->z)

2.代码解析

<el-table
   ref="multipleTable"
   border
   tooltip-effect="dark"
   class="xg-table"
   style="width: 100%"
   max-height="600">
   <el-table-column
    type="selection"
    width="60" />
   <el-table-column
    :default-sort = "{prop: 'DevName'}"
    :sort-method="sortDevName"
    prop="DevName"
    label="名称"
    sortable
    show-overflow-tooltip />
</el-table>

设置属性sortable,会按照自带的机制排序,不符合我们的预期;

所以增加属性 sort-method,在方法中自定义排序方式

<script>
  export default {
    methods: {
      sortDevName(str1, str2) {
       let res = 0
       for (let i = 0; ;i++) {
  if (!str1[i] || !str2[i]) {
   res = str1.length - str2.length
   break
  }
  const char1 = str1[i]
  const char1Type = this.getChartType(char1)
  const char2 = str2[i]
  const char2Type = this.getChartType(char2)
  // 类型相同的逐个比较字符
  if (char1Type[0] === char2Type[0]) {
   if (char1 === char2) {
   continue
   } else {
   if (char1Type[0] === 'zh') {
    res = char1.localeCompare(char2)
   } else if (char1Type[0] === 'en') {
    res = char1.charCodeAt(0) - char2.charCodeAt(0)
   } else {
    res = char1 - char2
   }
   break
   }
  } else {
  // 类型不同的,直接用返回的数字相减
   res = char1Type[1] - char2Type[1]
   break
  }
   }
   return res
  },
  getChartType(char) {
  // 数字可按照排序的要求进行自定义,我这边产品的要求是
  // 数字(0->9)->大写字母(A->Z)->小写字母(a->z)->中文拼音(a->z)
   if (/^[\u4e00-\u9fa5]$/.test(char)) {
  return ['zh', 300]
   }
   if (/^[a-zA-Z]$/.test(char)) {
  return ['en', 200]
   }
   if (/^[0-9]$/.test(char)) {
  return ['number', 100]
   }
   return ['others', 999]
  }
    }
  }
</script>

3.页面效果

 原列表                   ==》》            正序                 ==》》         倒序

解决vue elementUI中table里数字、字母、中文混合排序问题解决vue elementUI中table里数字、字母、中文混合排序问题解决vue elementUI中table里数字、字母、中文混合排序问题

总结

以上所述是小编给大家介绍的解决vue elementUI中table里数字、字母、中文混合排序问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
利用腾讯的ip地址库做ip物理地址定位
Jul 24 Javascript
javascript 隔行换色函数代码
Oct 24 Javascript
基于jquery的jqDnR拖拽溢出的修改
Feb 12 Javascript
href下载文件根据id取url并下载
May 28 Javascript
javascript实现滑动解锁功能
Dec 31 Javascript
PHP 数组current和next用法分享
Mar 05 Javascript
JS中取二维数组中最大值的方法汇总
Apr 17 Javascript
yarn的使用与升级Node.js的方法详解
Jun 04 Javascript
浅析Vue自定义组件的v-model
Nov 26 Javascript
node实现爬虫的几种简易方式
Aug 22 Javascript
webpack常用配置总览(小结)
Nov 18 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
Sep 04 Javascript
Vue程序化的事件监听器(实例方案详解)
Jan 07 #Javascript
微信小程序服务器日期格式化问题
Jan 07 #Javascript
webpack 最佳配置指北(推荐)
Jan 07 #Javascript
微信小程序接入腾讯云验证码的方法步骤
Jan 07 #Javascript
vue实现数据控制视图的原理解析
Jan 07 #Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
Jan 07 #Javascript
详解微信小程序之提高应用速度小技巧
Jan 07 #Javascript
You might like
中篇:安装及配置PHP
2006/12/13 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
vue.js实例对象+组件树的详细介绍
2017/10/20 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
详解Next.js页面渲染的优化方案
2019/01/27 Javascript
layui树形菜单动态遍历的例子
2019/09/23 Javascript
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python获得文件创建时间和修改时间的方法
2015/06/30 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
计算机应用专业推荐信
2013/11/13 职场文书
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
物业工作计划书
2014/01/10 职场文书
最新会计专业求职信范文
2014/01/28 职场文书
领导接待方案
2014/03/13 职场文书
国旗下演讲稿
2014/05/08 职场文书
营销计划书
2015/01/17 职场文书
信息简报范文
2015/07/21 职场文书
python基础之停用词过滤详解
2021/04/21 Python
如何获取numpy array前N个最大值
2021/05/14 Python
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python
vue中data里面的数据相互使用方式
2022/06/05 Vue.js