解决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 相关文章推荐
jquery选择器(常用选择器说明)
Sep 28 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
Oct 31 Javascript
jQuery实现鼠标划过展示大图的方法
Mar 09 Javascript
javascript中Math.random()使用详解
Apr 15 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
Jul 20 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
Mar 29 Javascript
JS基于面向对象实现的拖拽功能示例
Dec 20 Javascript
解析vue data不可以使用箭头函数问题
Jul 03 Javascript
使用vue完成微信公众号网页小记(推荐)
Apr 28 Javascript
js常见遍历操作小结
Jun 06 Javascript
webpack打包优化的几个方法总结
Feb 10 Javascript
js String.prototype.trim字符去前后空格的扩展
Aug 23 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+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
php对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
2019/03/18 PHP
两个DIV等高的JS的实现代码
2007/12/23 Javascript
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 &amp; 模式)
2009/08/04 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
从Python程序中访问Java类的简单示例
2015/04/20 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
Python自动重新加载模块详解(autoreload module)
2020/04/01 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
Python如何将装饰器定义为类
2020/07/30 Python
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
三严三实对照检查材料
2014/09/22 职场文书
安全第一课观后感
2015/06/18 职场文书