基于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 常用方法经典总结
Jan 28 Javascript
Chrome Form多次提交表单问题的解决方法
May 09 Javascript
js跑马灯代码(自写)
Apr 17 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
Jun 08 Javascript
javascript实现浏览器窗口传递参数的方法
Sep 03 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
Jan 18 Javascript
jQuery封装的tab选项卡插件分享
Jun 16 Javascript
JavaScript常用基础知识强化学习
Dec 09 Javascript
jQuery unbind 删除绑定事件详解
May 24 Javascript
jQuery购物网页经典制作案例
Aug 19 Javascript
canvas学习之API整理笔记(一)
Dec 29 Javascript
详解Webpack4多页应用打包方案
Jul 16 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
用Apache反向代理设置对外的WWW和文件服务器
2006/10/09 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
PHP的PDO操作简单示例
2016/03/30 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
动态加载jquery库的方法
2014/02/12 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
每天一篇javascript学习小结(Date对象)
2015/11/13 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
JavaScript的继承实现小结
2017/05/07 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
Python中操作文件之write()方法的使用教程
2015/05/25 Python
python自动12306抢票软件实现代码
2018/02/24 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
Python字典的核心底层原理讲解
2019/01/24 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
Python Merge函数原理及用法解析
2020/09/16 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
迎元旦广播稿
2014/02/22 职场文书
明确岗位职责
2015/02/14 职场文书
个人思想政治总结
2015/03/05 职场文书
遗失证明范文
2015/06/19 职场文书
2022微信温控新功能上线
2022/05/09 数码科技