解决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 相关文章推荐
js对象的比较
Feb 26 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
May 12 Javascript
一个仿糯米弹框效果demo
Jul 22 Javascript
js变形金刚文字特效代码分享
Aug 20 Javascript
jquery动态导航插件dynamicNav用法实例分析
Sep 06 Javascript
使用jQuery调用XML实现无刷新即时聊天
Aug 07 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
Jun 29 Javascript
JavaScript适配器模式详解
Oct 19 Javascript
使用electron将vue-cli项目打包成exe的方法
Sep 29 Javascript
vue滚动tab跟随切换效果
Jun 29 Javascript
微信小程序实现点击导航条切换页面
Nov 19 Javascript
vue watch监控对象的简单方法示例
Jan 07 Vue.js
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
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
smarty中常用方法实例总结
2015/08/07 PHP
Html中JS脚本执行顺序简单举例说明
2010/06/19 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
2013/08/02 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
Python常见数据结构详解
2014/07/24 Python
python 构造三维全零数组的方法
2018/11/12 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
python数值基础知识浅析
2019/11/19 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
函授大学生自我鉴定
2014/02/05 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
利群广告词
2014/03/20 职场文书
中介业务员岗位职责
2014/04/09 职场文书
低碳生活倡议书
2014/04/14 职场文书
财产分割协议书范本
2014/11/03 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
担保书范文
2015/01/20 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
win sever 2022如何占用操作主机角色
2022/06/25 Servers