解决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 轻松支持函数重载 (Part 2 - 实现)
Aug 04 Javascript
javascript 闭包疑问
Dec 30 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
Feb 25 Javascript
jquery实现简单实用的打分程序实例
Jul 23 Javascript
简单讲解AngularJS的Routing路由的定义与使用
Mar 05 Javascript
Angular 常用指令实例总结整理
Dec 13 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
Aug 29 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
Oct 10 Javascript
vue 使用vue-i18n做全局中英文切换的方法
Oct 29 Javascript
layer实现弹出层自动调节位置
Sep 05 Javascript
微信小程序手动添加收货地址省市区联动
May 18 Javascript
bootstrap-table后端分页功能完整实例
Jun 01 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分页集合包括使用方法
2013/10/21 PHP
php密码生成类实例
2014/09/24 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
2017/03/23 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
vue-test-utils初使用详解
2019/05/23 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
深入理解Python中的内置常量
2017/05/20 Python
python版本单链表实现代码
2018/09/28 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
python已协程方式处理任务实现过程
2019/12/27 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
Python连接Impala实现步骤解析
2020/08/04 Python
英国网上购买门:Direct Doors
2018/06/07 全球购物
银行个人求职自荐信范文
2013/12/16 职场文书
大型活动策划方案
2014/01/12 职场文书
采购求职信
2014/03/17 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
南京青奥会口号
2014/06/12 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
财务审计整改报告
2014/11/06 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
独生子女证明范本
2015/06/19 职场文书
Python合并pdf文件的工具
2021/07/01 Python