基于JS模仿windows文件按名称排序效果


Posted in Javascript onJune 29, 2016

作个记录,主要是对数字的处理,如果数字的前面字符是相同的,则数字以值比较,而不是单个字符之间的比较。

function SortLikeWin(v1, v2) {
var a = v1.name;
var b = v2.name;
var reg = /[0-9]+/g;
var lista = a.match(reg);
var listb = b.match(reg);
if (!lista || !listb) {
return a.localeCompare(b);
}
for (var i = 0, minLen = Math.min(lista.length, listb.length) ; i < minLen; i++) {
//数字所在位置序号
var indexa = a.indexOf(lista[i]);
var indexb = b.indexOf(listb[i]);
//数字前面的前缀
var prefixa = a.substring(0, indexa);
var prefixb = a.substring(0, indexb);
//数字的string
var stra = lista[i];
var strb = listb[i];
//数字的值
var numa = parseInt(stra);
var numb = parseInt(strb);
//如果数字的序号不等或前缀不等,属于前缀不同的情况,直接比较
if (indexa != indexb || prefixa != prefixb) {
return a.localeCompare(b);
}
else {
//数字的string全等
if (stra === strb) {
//如果是最后一个数字,比较数字的后缀
if (i == minLen - 1) {
return a.substring(indexa).localeCompare(b.substring(indexb));
}
//如果不是最后一个数字,则循环跳转到下一个数字,并去掉前面相同的部分
else {
a = a.substring(indexa + stra.length);
b = b.substring(indexa + stra.length);
}
}
//如果数字的string不全等,但值相等
else if (numa == numb) {
//直接比较数字前缀0的个数,多的更小
return strb.lastIndexOf(numb + '') - stra.lastIndexOf(numa + '');
}
else {
//如果数字不等,直接比较数字大小
return numa - numb;
}
}
}
}

使用方法,Array.sort(SortLikeWin);

以上所述是小编给大家介绍的基于JS模仿windows文件按名称排序效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
从js向Action传中文参数出现乱码问题的解决方法
Dec 29 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
Mar 02 Javascript
javascript 闭包详解
Jul 02 Javascript
谈谈JavaScript自定义回调函数
Oct 18 Javascript
vue.js入门(3)——详解组件通信
Dec 02 Javascript
最基础的vue.js双向绑定操作
Aug 23 Javascript
JavaScript使用math.js进行精确计算操作示例
Jun 19 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
May 30 Javascript
解决在Vue中使用axios用form表单出现的问题
Oct 30 Javascript
mpvue微信小程序开发之实现一个弹幕评论
Nov 24 Javascript
小程序开发之模态框组件封装
Apr 23 Javascript
Vue使用screenfull实现全屏效果
Sep 17 Javascript
JavaScript中闭包的写法和作用详解
Jun 29 #Javascript
浅谈window.onbeforeunload() 事件调用ajax
Jun 29 #Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
Jun 29 #Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
Jun 28 #Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
Jun 28 #Javascript
jqGrid用法汇总(全经典)
Jun 28 #Javascript
JavaScript实现时间倒计时跳转(推荐)
Jun 28 #Javascript
You might like
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
Vue自定义指令拖拽功能示例
2017/02/17 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
python中实现php的var_dump函数功能
2015/01/21 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
django session完成状态保持的方法
2018/11/27 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
canvas实现有递增动画的环形进度条的实现方法
2019/07/10 HTML / CSS
this关键字的作用
2016/01/30 面试题
暑期实践思想汇报
2014/01/06 职场文书
主题实践活动总结
2014/05/08 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
cf战队宣传语
2015/07/13 职场文书
关于做家务的心得体会
2016/01/23 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
Python实现随机生成迷宫并自动寻路
2021/06/13 Python