基于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中delegate与on的用法与区别示例介绍
Dec 20 Javascript
jQuery中:input选择器用法实例
Jan 03 Javascript
javascript文本模板用法实例
Jul 31 Javascript
Angular2 (RC5) 路由与导航详解
Sep 21 Javascript
使用SVG基本操作API的实例讲解
Sep 14 Javascript
详解Vue.js Mixins 混入使用
Sep 15 Javascript
浅谈vuejs实现数据驱动视图原理
Feb 23 Javascript
在vue项目中,使用axios跨域处理
Mar 07 Javascript
官方推荐react-navigation的具体使用详解
May 08 Javascript
详解Angular操作cookies方法
Jun 01 Javascript
详解vue使用插槽分发内容slot的用法
Mar 28 Javascript
JavaScript 中的六种循环方法
Jan 06 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快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
javascript数组组合成字符串的脚本
2021/01/06 Javascript
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
JavaScript移除数组元素减少长度的方法
2013/09/05 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
2018/07/24 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
Python中暂存上传图片的方法
2015/02/18 Python
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
九步学会Python装饰器
2015/05/09 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
python批量处理文件或文件夹
2020/07/28 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
重构Python代码的六个实例
2020/11/25 Python
九月份红领巾广播稿
2014/01/22 职场文书
怎么写自荐书范文
2014/02/12 职场文书
火锅店的活动方案
2014/08/15 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
寒假生活随笔
2015/08/15 职场文书