基于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 处理 URL 的两个函数代码
Aug 13 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
Dec 06 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
Jan 22 Javascript
DWR实现模拟Google搜索效果实现原理及代码
Jan 30 Javascript
jQuery取得设置清空select选择的文本与值
Jul 08 Javascript
js图片轮播特效代码分享
Sep 07 Javascript
javascript实现简易计算器
Feb 01 Javascript
微信小程序页面传值实例分析
Apr 19 Javascript
深入理解vue $refs的基本用法
Jul 13 Javascript
es6新特性之 class 基本用法解析
May 05 Javascript
小程序数据通信方法大全(推荐)
Apr 15 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
Oct 29 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
自己动手做一个SQL解释器
2006/10/09 PHP
PHP连接access数据库
2008/03/27 PHP
php查看session内容的函数
2008/08/27 PHP
php学习之function的用法
2012/07/14 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
Jquery Change与bind事件代码
2011/09/29 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
js获取视频时长代码
2014/04/10 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
js友好的时间返回函数
2016/08/24 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
python实现周期方波信号频谱图
2018/07/21 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
班级寄语大全
2014/04/10 职场文书
科学发展观演讲稿
2014/09/11 职场文书
爱心募捐感谢信
2015/01/22 职场文书
罚款通知怎么写
2015/04/22 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS