基于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代码
Aug 09 Javascript
jQuery之自动完成组件的深入解析
Jun 19 Javascript
jquery插件bxslider用法实例分析
Apr 16 Javascript
基于jquery实现轮播焦点图插件
Mar 31 Javascript
js转换对象为xml
Feb 17 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
Mar 21 jQuery
node.js调用Chrome浏览器打开链接地址的方法
May 17 Javascript
vue中使用localstorage来存储页面信息
Nov 04 Javascript
利用vscode调试编译后的js代码详解
May 14 Javascript
微信 jssdk 签名错误invalid signature的解决方法
Jan 14 Javascript
详解JavaScript 作用域
Jul 14 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
Nov 02 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学习教程之第2天
2008/06/15 PHP
PHP 程序员的调试技术小结
2009/11/15 PHP
PHP 验证码的实现代码
2011/07/17 PHP
php explode函数实例代码
2012/02/27 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
自己实现ajax封装示例分享
2014/04/01 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
总结js函数相关知识点
2018/02/27 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
python append、extend与insert的区别
2016/10/13 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
商业房地产广告语
2014/03/13 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
团日活动总结格式
2015/05/11 职场文书
跳高加油稿
2015/07/21 职场文书
公司车队管理制度
2015/08/04 职场文书
单位病假条范文
2015/08/17 职场文书