解决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实现动态CSS换肤技术的脚本
Jun 29 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
Jun 05 Javascript
js对象的复制继承实例
Jan 10 Javascript
jQuery手动点击实现图片轮播特效
Apr 20 Javascript
全面解析bootstrap格子布局
May 22 Javascript
jquery动态遍历Json对象的属性和值的方法
Jul 27 Javascript
关于vue.js弹窗组件的知识点总结
Sep 11 Javascript
AngularJS表单验证中级篇(3)
Sep 28 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
Apr 11 Javascript
React 子组件向父组件传值的方法
Jul 24 Javascript
jQuery 实现扁平式小清新导航
Jul 07 jQuery
vue elementui tree 任意级别拖拽功能代码
Aug 31 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字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
php的$_FILES的临时储存文件与回收机制实测过程
2013/07/12 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
PHP与以太坊交互详解
2018/08/24 PHP
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
js select option对象小结
2013/12/20 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
原生JS实现的碰撞检测功能示例
2018/05/18 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
详谈python http长连接客户端
2017/06/12 Python
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
Python遍历字典方式就实例详解
2019/12/28 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
机械专业应届生求职信
2013/12/12 职场文书
海飞丝的广告词
2014/03/20 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server
pytorch 6 batch_train 批训练操作
2021/05/28 Python
Oracle中DBLink的详细介绍
2022/04/29 Oracle
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技