解决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判断单选框或复选框是否选中方法集锦
Apr 04 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
Jun 26 Javascript
javascritp添加url参数将参数加入到url中
Sep 25 Javascript
JS操作HTML自定义属性的方法
Feb 10 Javascript
常用的javascript设计模式
Jan 11 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
Apr 27 Javascript
layer弹窗插件操作方法详解
May 19 Javascript
使用Vue自定义指令实现Select组件
May 24 Javascript
js如何获取图片url的Blob值并预览示例代码
Mar 07 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
Nov 06 Javascript
详解Vue的mixin策略
Nov 19 Vue.js
Vue实现todo应用的示例
Feb 20 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返回当前日期或者指定日期是周几
2015/05/21 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
php图片裁剪函数
2018/10/31 PHP
js正确获取元素样式详解
2009/08/07 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
template.js前端模板引擎使用详解
2017/10/10 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
Django数据库操作之save与update的使用
2020/04/01 Python
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
管理专员自荐信
2014/01/26 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
2014年保育员工作总结
2014/12/02 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS
2022漫威和DC电影上映作品
2022/04/05 欧美动漫