基于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 相关文章推荐
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
Jan 12 Javascript
JS自动缩小超出大小的图片
Oct 12 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
Dec 10 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
Dec 03 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
May 31 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
Aug 29 Javascript
Javascript函数中的arguments.callee用法实例分析
Sep 16 Javascript
微信小程序 参数传递详解
Oct 24 Javascript
JavaScript this使用方法图解
Feb 04 Javascript
JQuery Ajax如何实现注册检测用户名
Sep 25 jQuery
element中table高度自适应的实现
Oct 21 Javascript
jquery实现抽奖功能
Oct 22 jQuery
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图片上传代码
2013/11/04 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
js event事件的传递与冒泡处理
2009/12/06 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
js实现window.open不被拦截的解决方法汇总
2014/10/30 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
py-charm延长试用期限实例
2019/12/22 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
python中str内置函数用法总结
2020/12/27 Python
演讲比赛获奖感言
2014/02/02 职场文书
关于安全演讲稿
2014/05/09 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
老人节标语大全
2014/10/08 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
股东协议书范本2016
2016/03/21 职场文书