基于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实现title标题栏文字不间断滚动显示效果
Sep 07 Javascript
bootstrap table表格客户端分页实例
Aug 07 Javascript
jquery获取链接地址和跳转详解(推荐)
Aug 15 jQuery
javascript 作用于作用域链的详解
Sep 27 Javascript
详解vue中使用express+fetch获取本地json文件
Oct 10 Javascript
Vue2.0点击切换类名改变样式的方法
Aug 22 Javascript
详解Webpack loader 之 file-loader
Nov 07 Javascript
使用Vue实现移动端左滑删除效果附源码
May 16 Javascript
JavaScript前端实现压缩图片功能
Mar 06 Javascript
javascript解析json格式的数据方法详解
Aug 07 Javascript
原生js实现下拉框选择组件
Jan 20 Javascript
手写实现JS中的new
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 FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
php删除指定目录的方法
2015/04/03 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
xtree.js 代码
2007/03/13 Javascript
语义化 H1 标签
2008/01/14 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
vue-router源码之history类的浅析
2019/05/21 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
[02:10]三分钟回顾完美世界城市挑战赛
2019/01/24 DOTA
详解Python中for循环的使用
2015/04/14 Python
python简单读取大文件的方法
2016/07/01 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
毕业生自荐书
2014/02/03 职场文书
家电业务员岗位职责
2014/03/10 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
小学科学教学计划
2015/01/21 职场文书
离婚协议书样本
2015/01/26 职场文书
黄山导游词
2015/01/31 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS
Redis读写分离搭建的完整步骤
2021/09/14 Redis
CSS控制继承中的height能变为可继承吗
2022/06/10 HTML / CSS