基于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 相关文章推荐
JavaScript是否可实现多线程  深入理解JavaScript定时机制
Dec 22 Javascript
JavaScript中的this实例分析
Apr 28 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
Jun 26 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
Jun 04 Javascript
简单谈谈JavaScript的同步与异步
Dec 31 Javascript
实例讲解JS中setTimeout()的用法
Jan 28 Javascript
js实现无缝滚动图
Feb 22 Javascript
Vue生命周期示例详解
Apr 12 Javascript
Vue之Watcher源码解析(1)
Jul 19 Javascript
webpack4之SplitChunksPlugin使用指南
Jun 12 Javascript
javascript将非数值转换为数值
Sep 13 Javascript
微信小程序云开发 搭建一个管理小程序
May 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中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
jQuery 入门讲解1
2009/04/15 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
没有document.getElementByName方法
2013/08/19 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
layui的select联动实现代码
2019/09/28 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
Python使用遗传算法解决最大流问题
2018/01/29 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
django和flask哪个值得研究学习
2020/07/31 Python
python爬取代理ip的示例
2020/12/18 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
盛大笔试题
2016/11/05 面试题
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
生产部主管岗位职责
2014/01/06 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
会计主管岗位职责
2015/04/02 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书