基于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 相关文章推荐
jQuery 添加/移除CSS类实现代码
Feb 11 Javascript
JavaScript中判断对象类型的几种方法总结
Nov 11 Javascript
js获取 type=radio 值的方法
May 09 Javascript
jQuery中data()方法用法实例
Dec 27 Javascript
Javascript模仿淘宝信用评价实例(附源码)
Nov 26 Javascript
分享我的jquery实现下拉菜单心的
Nov 29 Javascript
canvas实现图像放大镜
Feb 06 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
May 11 Javascript
angular实现页面打印局部功能的思考与方法
Apr 13 Javascript
微信小程序 腾讯地图显示偏差问题解决
Jul 27 Javascript
layui扩展上传组件模拟进度条的方法
Sep 23 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
Nov 07 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 excel类 phpExcel使用方法介绍
2010/08/21 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
2011/10/08 PHP
PHP使用数组实现队列
2012/02/05 PHP
php定界符
2014/06/19 PHP
PHP中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
php封装的验证码类分享
2017/02/26 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
javascript闭包的理解和实例
2010/08/12 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
Python Tkinter GUI编程入门介绍
2015/03/10 Python
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
药学专业个人的自我评价
2013/12/31 职场文书
酒店销售主管岗位职责
2014/01/04 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
公司财务管理制度
2015/08/04 职场文书
css3 选择器
2022/05/11 HTML / CSS