基于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 基础学习笔记
May 29 Javascript
预加载css或javascript的js代码
Apr 23 Javascript
JS 操作符整理[推荐收藏]
Nov 15 Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
Jun 09 Javascript
AngularJs 国际化(I18n/L10n)详解
Sep 01 Javascript
原生js实现简单的链式操作
Jul 04 Javascript
详解Vue 全局变量,局部变量
Apr 17 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
Apr 01 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
Apr 28 Javascript
React 高阶组件HOC用法归纳
Jun 13 Javascript
React实现动效弹窗组件
Jun 21 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 iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
javascript背投广告代码的完善
2008/04/08 Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
jquery移动点击的项目到列表最顶端的方法
2015/06/24 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
跟老齐学Python之Import 模块
2014/10/13 Python
基于Python os模块常用命令介绍
2017/11/03 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
Python序列类型的打包和解包实例
2019/12/21 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
个人股份转让协议书范本
2014/10/26 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
开除通知书范本
2015/04/25 职场文书
初中英语教学反思范文
2016/02/15 职场文书
Python实现机器学习算法的分类
2021/06/03 Python