解决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 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
jQuery对html元素取值与赋值的方法
Nov 20 Javascript
在javascript中执行任意html代码的方法示例解读
Dec 25 Javascript
使用jQuery实现input数值增量和减量的方法
Jan 24 Javascript
JQuery中serialize()用法实例分析
Feb 06 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
Sep 01 Javascript
jQuery、zepto、js常用小技巧
Feb 12 Javascript
JavaScript监听手机物理返回键的两种解决方法
Aug 14 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
Apr 01 Javascript
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 jQuery
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
Aug 29 Javascript
原生js实现each方法实例代码详解
May 27 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_xmlhttp 乱码问题解决方法
2009/08/07 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
php取得字符串首字母的方法
2015/03/25 PHP
JS 继承实例分析
2008/11/04 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
webpack-mvc 传统多页面组件化开发详解
2019/05/07 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
Vue 简单实现前端权限控制的示例
2020/12/25 Vue.js
[03:07]完美世界DOTA2联赛PWL DAY10 决赛集锦
2020/11/11 DOTA
python+flask实现API的方法
2018/11/21 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
JAVA和C++区别都有哪些
2015/03/30 面试题
计算机专业自我鉴定
2013/10/15 职场文书
kfc实习自我鉴定
2013/12/14 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
导游词之日本富士山
2020/01/06 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
go语言中fallthrough的用法说明
2021/05/06 Golang
JavaScript 原型与原型链详情
2021/11/02 Javascript
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android
python的html标准库
2022/04/29 Python