解决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 相关文章推荐
JSQL  一个 web DB 的封装
May 05 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
May 07 Javascript
js鼠标悬浮出现遮罩层的方法
Jan 28 Javascript
js实现可键盘控制的简单抽奖程序
Jul 13 Javascript
AngularJS ng-bind-html 指令详解及实例代码
Jul 30 Javascript
JS实现漂亮的时间选择框效果
Aug 20 Javascript
浅析Javascript ES6新增值比较函数Object.is
Aug 24 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 Javascript
使用Fullpage插件快速开发整屏翻页的页面
Sep 13 Javascript
从零开始搭建vue移动端项目到上线的步骤
Oct 15 Javascript
Vue实现商品分类菜单数量提示功能
Jul 26 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
Feb 12 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 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
解析yii数据库的增删查改
2013/06/20 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
javascript 贪吃蛇实现代码
2008/11/22 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
pygame实现弹力球及其变速效果
2017/07/03 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
python处理csv中的空值方法
2018/06/22 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
销售冠军获奖感言
2014/02/03 职场文书
工程项目建议书范文
2014/03/12 职场文书
医德医魂心得体会
2014/09/11 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
Flink 侧流输出源码示例解析
2022/09/23 Servers