基于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 相关文章推荐
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
Oct 17 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
Jun 08 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
Jun 20 Javascript
javascript学习笔记(十九) 节点的操作实现代码
Jun 20 Javascript
js实现DOM走马灯特效的方法
Jan 21 Javascript
JavaScript实现基于Cookie的存储类实例
Apr 10 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
Nov 26 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
Jul 19 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
Jun 19 Javascript
vue中格式化时间过滤器代码实例
Apr 17 Javascript
vant 自定义 van-dropdown-item的用法
Aug 05 Javascript
toString.call()通用的判断数据类型方法示例
Aug 28 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+MySQL实现消息队列的方法分析
2018/05/09 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
js chrome浏览器判断代码
2010/03/28 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
JS判断移动端访问设备并加载对应CSS样式
2014/06/13 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
Bootstrap每天必学之响应式导航、轮播图
2016/04/25 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
javascript实现画板功能
2020/04/12 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
linux环境下Django的安装配置详解
2019/07/22 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
python字符串的拼接方法总结
2019/11/18 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
django跳转页面传参的实现
2020/09/17 Python
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
初中生物教学反思
2014/01/10 职场文书
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
本科生求职信
2014/06/17 职场文书
贷款委托书怎么写
2014/08/02 职场文书
教师节慰问信
2015/02/15 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书