基于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右键菜单效果代码
Jul 21 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
Oct 31 Javascript
html中的input标签的checked属性jquery判断代码
Sep 19 Javascript
JavaScript常用本地对象小结
Mar 28 Javascript
浅谈String.valueOf()方法的使用
Jun 06 Javascript
js 将图片连接转换成base64格式的简单实例
Aug 10 Javascript
jquery checkbox的相关操作总结
Oct 17 Javascript
Vue.2.0.5过渡效果使用技巧
Mar 16 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
Oct 21 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
Nov 15 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
Jun 24 Javascript
node.js express框架简介与实现
Jul 23 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实现事件监听与触发的方法
2014/11/21 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
js中cookie的使用详细分析
2008/05/28 Javascript
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
js实现中文实时时钟
2020/01/15 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
python进程类subprocess的一些操作方法例子
2014/11/22 Python
Python退火算法在高次方程的应用
2018/07/26 Python
python组合无重复三位数的实例
2018/11/13 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
Flask配置Cors跨域的实现
2019/07/12 Python
Python类的动态绑定实现原理
2020/03/21 Python
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
公务员培训自我鉴定
2014/02/01 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
委托书范文
2014/04/02 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
前台接待岗位职责
2015/02/03 职场文书
SQL SERVER存储过程用法详解
2022/02/24 SQL Server