layui排序逻辑的一点修复
编写时间 2018-12-10 10:54:00
前天用Markdown写了份书单,但是发现没有排序功能,
以及UI有点死板(虽然比自己写的好看很多很多了)
于是装上了layui的框架,把书单升级为layui的动态表格。
本来一切完美的,但是发现字数的排序是字典排序而不是数值排序。
查了一下,应该是因为咱书单的字数不是123或者123.456,而是123.45万
因为多了一个万,然后就判断不是数值了...
去掉"万"字也可以,但是太吃藕啦,于是定位到layui.js文件,修改下源码。
但是测试的时候又发现了,汉字排序有点奇怪,那就顺手改成汉字拼音排序吧。
使用param1.localeCompare(param2,"zh");排序
原代码是下面
clone.sort(function(o1, o2){
var isNum = /^-?\d+$/
,v1 = o1[key]
,v2 = o2[key];
if(isNum.test(v1)) v1 = parseFloat(v1);
if(isNum.test(v2)) v2 = parseFloat(v2);
if(v1 && !v2){
return 1;
} else if(!v1 && v2){
return -1;
}
if(v1 > v2){
return 1;
} else if (v1 < v2) {
return -1;
} else {
return 0;
}
};
咱改成
clone.sort(function(o1, o2){
var haveNum = /-?(\d+\.\d+)|(\d+)/
,v1 = o1[key]
,v2 = o2[key];
//判断是否含有数字
if(haveNum.test(v1) && haveNum.test(v2)){
v1 = parseFloat(v1);
v2 = parseFloat(v2);
if(v1 > v2){
return 1;
} else if (v1 < v2) {
return -1;
} else {
return 0;
}
}
//否则返回拼音排序
return v2.localeCompare(v1, "zh");
});

浙公网安备 33010602011771号