解决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中遭遇级联表达式陷阱
Mar 08 Javascript
javascript延时加载之defer测试
Dec 28 Javascript
在JavaScript中判断整型的N种方法示例介绍
Jun 18 Javascript
JavaScript中的变量作用域介绍
Dec 31 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
Dec 11 Javascript
Javascript获取background属性中url的值
Oct 17 Javascript
Javascript实现图片懒加载插件的方法
Oct 20 Javascript
微信小程序 常用工具类详解及实例
Feb 15 Javascript
vue-cli之router基本使用方法详解
Oct 17 Javascript
JavaScript生成指定范围的时间列表
Mar 19 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
Oct 26 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
Dec 24 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
php Hex RGB颜色值互换的使用
2013/05/10 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
2015/04/15 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
JS动态创建元素的两种方法
2016/04/20 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
Angular2库初探
2017/03/01 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
vue观察模式浅析
2018/09/25 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
PyCharm配置mongo插件的方法
2018/11/30 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
python画图的函数用法以及技巧
2019/06/28 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
有机童装:Toby Tiger
2018/05/23 全球购物
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
中间件分为哪几类
2012/03/14 面试题
装修协议书范本
2014/04/21 职场文书
2014年业务工作总结
2014/11/17 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
骨干教师个人总结
2015/02/11 职场文书
教师节联欢会主持词
2015/07/04 职场文书