基于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 相关文章推荐
ejs v9 javascript模板系统
Mar 21 Javascript
解析Javascript小括号“()”的多义性
Dec 03 Javascript
JavaScript插件化开发教程 (一)
Jan 27 Javascript
JQuery select(下拉框)操作方法汇总
Apr 15 Javascript
JavaScript中String.prototype用法实例
May 20 Javascript
JS获取文件大小方法小结
Dec 08 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
Jul 20 Javascript
Js获取当前日期时间及格式化代码
Sep 17 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
Nov 21 Javascript
Vue CLI3中使用compass normalize的方法
May 30 Javascript
Vue-CLI项目中路由传参的方式详解
Sep 01 Javascript
JavaScript实现外溢动态爱心的效果的示例代码
Mar 21 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中如何调用webservice的实例参考
2013/04/25 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
PHP多进程编程实例
2014/10/15 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
小程序云开发实战小结
2018/10/25 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
如何使用 vue-cli 创建模板项目
2020/11/19 Vue.js
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
python 调用有道api接口的方法
2019/01/03 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
pyqt5中动画的使用详解
2020/04/01 Python
Python基础教程之输入输出和运算符
2020/07/26 Python
澳大利亚首屈一指的在线购物目的地:Kogan.com
2017/02/02 全球购物
十佳大学生事迹材料
2014/01/29 职场文书
党风廉政建设责任书
2014/04/14 职场文书
初三学生评语大全
2014/04/24 职场文书
2014年度党员自我评议
2014/09/13 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
导游词之安徽九华山
2019/09/18 职场文书
python tqdm用法及实例详解
2021/06/16 Python