基于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计算字符串长度包含的中文是utf8格式
Oct 15 Javascript
jquery中的查找parents与closest方法之间的区别
Dec 02 Javascript
js两种拼接字符串的简单方法(必看)
Sep 02 Javascript
jQuery图片轮播实现并封装(一)
Dec 03 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
Aug 29 Javascript
详解10分钟学会vue滚动行为
Sep 21 Javascript
vue组件编写之todolist组件实例详解
Jan 22 Javascript
IE8中jQuery.load()加载页面不显示的原因
Nov 15 jQuery
基于JavaScript实现表格隔行换色
May 08 Javascript
vue中使用router全局守卫实现页面拦截的示例
Oct 23 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
vue 把二维或多维数组转一维数组
Apr 24 Vue.js
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的图形函数中显示汉字
2006/10/09 PHP
新手学PHP之数据库操作详解及乱码解决!
2007/01/02 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
jquery图片放大功能简单实现
2013/08/01 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
javascript关于“时间”的一次探索
2019/07/24 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
Python3+Appium安装使用教程
2019/07/05 Python
PyTorch实现AlexNet示例
2020/01/14 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
模特职业生涯规划范文
2014/02/26 职场文书
模特大赛策划方案
2014/05/28 职场文书
解放思想大讨论活动心得体会
2014/09/11 职场文书
终止劳动合同协议书
2014/10/05 职场文书
离婚协议书的范本
2015/01/27 职场文书
廉政承诺书范文
2015/04/28 职场文书
法定授权委托证明书
2015/06/18 职场文书
小学教师读书笔记
2015/07/01 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript
css3 文字断裂效果
2022/04/22 HTML / CSS