美文网首页
js sort实现文件名排序

js sort实现文件名排序

作者: MISS_3ca2 | 来源:发表于2021-07-29 17:15 被阅读0次

直接贴代码

<!DOCTYPE html>
<html>
<HEAD>
<script>
function isChCode(chCode){
var re= /^[\u4e00-\u9fa5]/;
var as = "" + chCode;
return (re.test(as));
}

//比较没有后缀的文件名
function fileNoExtCompare(a, b)
{
// 特殊字符判定
var specialChars = "!#$%^~()-+=-";
var firstCharA = a.charAt(0);
var firstCharB = b.charAt(0);
var spA = specialChars.indexOf(firstCharA);
var spB = specialChars.indexOf(firstCharB);
if(spA != spB)
{
return (spA >= 0) ? -1 : 1
}
if(spA >= 0 && spB >= 0)
{
if(firstCharA != firstCharB)
{
return firstCharB - firstCharA;
}
else
{
return fileNoExtCompare(a.substring(1), b.substring(1)) ;
}
}

//判定比较内容是不是数值
var nA = parseInt(a);
var nB = parseInt(b);
if(!isNaN(nA) && !isNaN(nB))
{
    return nA - nB;
}

if(firstCharA == firstCharB)
{
    return fileNoExtCompare(a.substring(1), b.substring(1)) ;
}

var isChFirstA = isChCode(firstCharA);
var isChFirstB = isChCode(firstCharB);
if(isChFirstA != isChFirstB)
{
    return isChFirstA ? 1 : -1;
}

var aa = "1" + firstCharA;
var bb = "1" + firstCharB;

//return a.localeCompare(b);
return aa.localeCompare(bb,'zh-CN');

}

//比较带后缀的文件名
function fileWithExtCompare(a, b){
//debugger
var onlyNameA = a.substring(0, a.lastIndexOf("."));
var onlyNameB = b.substring(0, b.lastIndexOf("."));
var result = fileNoExtCompare(onlyNameA, onlyNameB);
if(result != 0){
return result;
}

//比较后缀
var extA = a.substring(a.lastIndexOf("."));
var extB = b.substring(b.lastIndexOf("."));  
return extA.localeCompare(extB);  

}

function SortFileNames(files)
{
console.log(files);
files.sort(function(a,b){return fileWithExtCompare(a, b)});
console.log(files);
}

</script>
</HEAD>
<body>

<h1>JavaScript 数组排序</h1>

<p>单击按钮可按降序对数组进行排序。</p>
<button onclick="myFunction()">试一试</button>
<p id="demo"></p>
<script>
// var files = ["2.jpg", "!!2.jpg", "身份证反.jpg", "!@2.jpg", "微信图片_20210519171233.png", "werrew微信图片_20210519171233.png", "asssd微信图片_20210519171233.png", "11.png", "businesslic_02.jpg", "微信图片_20210630144243.png", "Dingtalk_20210316113817.JPG", "营业执照2 - 副本.jpg", "Dingtalk_20210325104308.JPG", "Dingtalk_20210422202247.jpg"];
// var files = ["Dingtalk_202103251043018.JPG", "Dingtalk_20210419180528.jpg", "Dingtalk_20210422202247.jpg", "企业微信截图.jpeg", "发票.png", "定额发票《.jpg", "普通发票.jpg", "身份证反.jpg", "身份证正.jpg"]
// var files = ["a.png", "b.png", "c.jpg", "d.png", "e.png", "f.png", "g.jpg", "h.jpg", "i.jpg", "j.png", "k.jpg", "l.png", "m.png", "n.png", "o.jpg"]

var files = ["a11.jpg", "2f.png", "b2d2.JPG", "34fd.jpg", "6dfd.jpg"];
document.getElementById("demo").innerHTML = files;

function myFunction() {
    SortFileNames(files);
    document.getElementById("demo").innerHTML = files;
} 

</script>
</body>
</html>

相关文章

  • 算法

    算法和数据结构 十大排序实现原理?使用场景js中sort使用的是哪种排序?sort使用的是插入排序和快速排序结合的...

  • js排序总结

    用sort()方法实现数字英文排序,用localeCompare()方法实现中文排序。 一、定义 sort():用...

  • Javascript常见问题(三)

    一. sort是如何排序的,如何解决sort排序的问题? arr2使用sort排序结果错误了,什么原因?js在计...

  • 算法—排序篇2

    1、归并排序(Merging Sort) 归并排序(Merging Sort): 就是利用归并的思想实现排序⽅法....

  • 排序问题

    一.js中sort()数字排序问题 语法:arrayObject.sort(sortMethod);参数sortM...

  • pandas高级特性

    1.pandas排序 按标签排序使用sort_index方法实现按标签排序 sort_index方法默认升序排序,...

  • JavaScript中的排序方法

    前言 这是一个纯粹的个人复习与加深对JS的排序认识的日志,我将从实现原生JS的sort方法开始复习,然后实现快速排...

  • 数组排序及去重方法总结

    一、 数组排序 Array.sort原理:首先,js中的sort会将排序的元素类型转化成字符串进行排序。不过它是一...

  • JavaScript学习--数组排序以及最大值、最小值问题

    1.数字排序在js中默认是使用 sort() 函数按照字符串顺序对值进行排序。但是,sort() 方法在对数值排序...

  • 从零开始学习Linux(四十四):Shell编程之sort命令

    1、sort命令 命令格式:sort [选项] 文件名;选项说明: -f:忽略大小写; -n:以数值型进行排序,默...

网友评论

      本文标题:js sort实现文件名排序

      本文链接:https://www.haomeiwen.com/subject/nzrcvltx.html