Juery解决tablesorter中文排序和字符范围的方法


Posted in Javascript onMay 06, 2015

本文实例讲述了Juery解决tablesorter中文排序和字符范围的方法。分享给大家供大家参考。具体分析如下:

tablesorter是jQuery插件中比较优秀的一款表格排序插件,我相信大家都使用过或有所耳闻,我在这里就不过多介绍了,详细信息可以看看官方网站:http://tablesorter.com/docs/(其中的demo做得比较完整)。

在使用了tablesorter开发的几个项目中,发现了两种类型的排序存在问题,如下:

第一个问题是无法对中文字符进行排序,这是因为在对字符排序时,是使用的unicode值进行的字符大小比较,代码如下:

Js代码

function sortText(a,b) {
  return ((a < b) ? -1 : ((a > b) ? 1 : 0));
};
function sortTextDesc(a,b) {
  return ((b < a) ? -1 : ((b > a) ? 1 : 0));
};
function sortText(a,b) {
  return ((a < b) ? -1 : ((a > b) ? 1 : 0));
};
function sortTextDesc(a,b) {
  return ((b < a) ? -1 : ((b > a) ? 1 : 0));
};

而我们想要得到的结果是按汉字拼音进行顺序进行排序,因此我们将代码修改为以下代码即可:

Js代码

function sortText(a,b) {
  return a.localeCompare(b);
};
function sortTextDesc(a,b) {
  return b.localeCompare(a);
};
function sortText(a,b) {
  return a.localeCompare(b);
};
function sortTextDesc(a,b) {
  return b.localeCompare(a);
};

localeCompare方法是JS自带的方法,不用多说,望文生义就知道这个方法是根据当前区域下对字符的大小进行比较,不过这个方法无法处理多音字。

第二个问题是无法对超出了范围的数值型数据进行排序,这是因为在进行数值类型转换时,存在数据值失真的情况,例如:

Js代码

alert(parseFloat('9999999999999999'));  // 10000000000000000
alert(parseFloat('10000000000000001')); // 10000000000000000
alert(parseFloat('10000000000000004')); // 10000000000000004
alert(parseFloat('10000000000000005')); // 10000000000000004
alert(parseFloat('10000000000000006')); // 10000000000000006
alert(parseFloat('9999999999999999'));  // 10000000000000000
alert(parseFloat('10000000000000001')); // 10000000000000000
alert(parseFloat('10000000000000004')); // 10000000000000004
alert(parseFloat('10000000000000005')); // 10000000000000004
alert(parseFloat('10000000000000006')); // 10000000000000006

这样的偏差会使得排序结果不准确,为了避免这种问题,应该不使用原始值进行比较,而是应该引入权值,数值从左到右,每一位数值对应的权值递减,然后根据权值和原始值计算出的新值用于比较,这就只需要修改formatFloat方法就能解决这个问题了。

Js代码

this.formatFloat = function(s) {    
  // TODO    
  var i = parseFloat(s);    
  return (isNaN(i)) ? 0 : i;    
};

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
解决 firefox 不支持 document.all的方法
Mar 12 Javascript
用jscript实现新建和保存一个word文档
Jun 15 Javascript
jQuery 源代码显示控件 (Ajax加载方式).
May 18 Javascript
基于jQuery的投票系统显示结果插件
Aug 12 Javascript
JS版的date函数(和PHP的date函数一样)
May 12 Javascript
javascript学习笔记--数字格式类型
May 22 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
Mar 27 Javascript
移动端滑动插件Swipe教程
Oct 16 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
Mar 14 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
Jan 24 Javascript
vue地区选择组件教程详解
May 04 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
Mar 26 Javascript
javascript操作表格排序实例分析
May 06 #Javascript
js获取form的方法
May 06 #Javascript
js给selected添加options的方法
May 06 #Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
May 06 #Javascript
js实现漂浮回顶部按钮实例
May 06 #Javascript
js实现仿百度汽车频道选择汽车图片展示实例
May 06 #Javascript
js中日期的加减法
May 06 #Javascript
You might like
批量修改RAR文件注释的php代码
2010/11/20 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
基于jquery的图片懒加载js
2010/06/30 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
Python实现PS图像抽象画风效果的方法
2018/01/23 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
自我鉴定 电子商务专业
2014/01/30 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
2014年建筑工作总结
2014/11/26 职场文书
资料员岗位职责
2015/02/10 职场文书
放假通知怎么写
2015/08/18 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
素质教育学习心得体会
2016/01/19 职场文书