基于JS模仿windows文件按名称排序效果

 更新时间:2016年06月29日 10:29:36   作者:本无所谓有无  
这篇文章主要介绍了基于JS实现模仿windows文件按名称排序的相关资料,主要是对数字的处理操作,非常不错,具有参考借鉴价值,需要的朋友可以参考下

作个记录,主要是对数字的处理,如果数字的前面字符是相同的,则数字以值比较,而不是单个字符之间的比较。

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实现图片懒加载

    基于javascript实现图片懒加载

    这篇文章主要介绍了javascript实现图片懒加载的方法及思路,有时我们需要用懒加载,也就是延迟加载图片的方式,来提高网站的亲和力,需要的朋友可以参考下
    2016-01-01
  • 关于JavaScript中JSON的5个小技巧分享

    关于JavaScript中JSON的5个小技巧分享

    这篇文章主要和大家分享五个JavaScript中的JSON技巧,例如:隐藏字符串化数据中的某些属性、创建自定义输出格式等,感兴趣的小伙伴可以了解一下
    2022-03-03
  • 实例分析javascript中的异步

    实例分析javascript中的异步

    这篇文章主要介绍的JS中异步的用法,实例代码简单易懂,方便大家更好的学习,有兴趣的朋友可以参考下
    2020-06-06
  • js设置文字颜色的方法示例

    js设置文字颜色的方法示例

    这篇文章主要介绍了js设置文字颜色的方法,涉及JS页面元素样式操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • JavaScript如何使用插值实现图像渐变

    JavaScript如何使用插值实现图像渐变

    这篇文章主要介绍了JavaScript如何使用插值实现图像渐变,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Bootstrap表单控件学习使用

    Bootstrap表单控件学习使用

    这篇文章教大家学习使用Bootstrap表单控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • JS实现文件动态顺序载入的方法

    JS实现文件动态顺序载入的方法

    这篇文章主要介绍了JS实现文件动态顺序载入的方法,实例分析了基于Mootools框架实现动态载入的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 纯JS实现动态时间显示代码

    纯JS实现动态时间显示代码

    本篇文章主要是对纯JS实现动态时间显示的代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • layui 数据表格 点击分页按钮 监听事件的实例

    layui 数据表格 点击分页按钮 监听事件的实例

    今天小编就为大家分享一篇layui 数据表格 点击分页按钮 监听事件的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JavaScript canvas实现刮刮乐案例

    JavaScript canvas实现刮刮乐案例

    这篇文章主要为大家详细介绍了JavaScript canvas实现刮刮乐案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10

最新评论