基于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函数般调用正则
Apr 08 Javascript
基于jQuery的实现简单的分页控件
Oct 10 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
Aug 05 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
May 12 Javascript
AngularJS内建服务$location及其功能详解
Jul 01 Javascript
JS闭包与延迟求值用法示例
Dec 22 Javascript
JS跨域请求外部服务器的资源
Feb 06 Javascript
HTML的select控件美化
Mar 27 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
Dec 21 Javascript
Angular5.1新功能分享
Dec 21 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
Jul 02 Javascript
详解npm 配置项registry修改为淘宝镜像
Sep 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实现自动登入google play下载app report的方法
2014/09/23 PHP
php文件上传的两种实现方法
2016/04/04 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
javaScript中&quot;==&quot;和&quot;===&quot;的区别详解
2018/03/16 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
以一段代码为实例快速入门Python2.7
2015/03/31 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
网络安全类面试题
2015/08/01 面试题
硕士研究生自我鉴定
2013/11/08 职场文书
预备党员转正思想汇报
2014/01/12 职场文书
运动会开幕式邀请函
2014/02/03 职场文书
工程专业求职自荐书范文
2014/02/08 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
捐书倡议书
2014/08/29 职场文书
反邪教观后感
2015/06/11 职场文书
爱国主义电影观后感
2015/06/18 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS
用python画城市轮播地图
2021/05/28 Python