解决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 相关文章推荐
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
Sep 26 Javascript
js 判断 enter 事件
Feb 12 Javascript
js将json格式内容转换成对象的方法
Nov 01 Javascript
Jquery实现遮罩层的方法
Jun 08 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
jQuery解决$符号命名冲突
Jun 18 Javascript
Angular.js指令学习中一些重要属性的用法教程
May 24 Javascript
基于jQuery Easyui实现登陆框界面
Jul 10 jQuery
JS实现上传图片的三种方法并实现预览图片功能
Jul 14 Javascript
基于iScroll实现内容滚动效果
Mar 21 Javascript
JavaScript 原型与原型链详情
Nov 02 Javascript
Vue全局事件总线你了解吗
Feb 24 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
php将HTML表格每行每列转为数组实现采集表格数据的方法
2015/04/03 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
php实现socket推送技术的示例
2017/12/20 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
JavaScript实现复制文章自动添加版权
2016/08/02 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
使用Python求解最大公约数的实现方法
2015/08/20 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
python线程中的同步问题及解决方法
2019/08/29 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
大学生的网上创业计划书
2013/12/31 职场文书
领导证婚人证婚词
2014/01/13 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
三八活动策划方案
2014/08/17 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
普通党员整改措施
2014/10/24 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书