基于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 相关文章推荐
textContent在Firefox下与innerText等效的属性
May 12 Javascript
JavaScript 小型打飞机游戏实现原理说明
Oct 28 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
Nov 07 Javascript
javascript图片延迟加载实现方法及思路
Dec 31 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
Sep 12 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
Dec 14 Javascript
jQuery动态生成表格及右键菜单功能示例
Jan 13 Javascript
详解AngularJS脏检查机制及$timeout的妙用
Jun 19 Javascript
jQuery中ajax获取数据赋值给页面的实例
Dec 31 jQuery
vue动态路由配置及路由传参的方式
May 23 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
Jun 18 jQuery
小程序中this.setData的使用和注意事项
Aug 28 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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
js a标签点击事件
2017/03/30 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
Python中实现三目运算的方法
2015/06/21 Python
在Python的Django框架中编写错误提示页面
2015/07/22 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
python微信公众号开发简单流程
2018/03/23 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
python ssh 执行shell命令的示例
2020/09/29 Python
英国家用电器购物网站:Hughes
2018/02/23 全球购物
Java中实现多态的机制
2015/08/09 面试题
食品营养与检测应届生求职信
2013/11/08 职场文书
庆八一活动方案
2014/01/25 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL