更新 'SrcJyAlist.js'

master
src48597962 2 years ago
parent 8680d52a68
commit 299d6001df
  1. 102
      SrcJyAlist.js

@ -70,77 +70,59 @@ function getlist(data,isdir) {
*/
if(!isdir){
//比较没有后缀的文件名
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
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);
}
if(spA >= 0 && spB >= 0)
{
if(firstCharA != firstCharB)
{
return firstCharB - firstCharA;
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
{
return fileNoExtCompare(a.substring(1), b.substring(1)) ;
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);
}
//判定比较内容是不是数值
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)) ;
//如果数字的string不全等,但值相等
else if (numa == numb) {
//直接比较数字前缀0的个数,多的更小
return strb.lastIndexOf(numb + '') - stra.lastIndexOf(numa + '');
}
var isChFirstA = isChCode(firstCharA);
var isChFirstB = isChCode(firstCharB);
if(isChFirstA != isChFirstB)
{
return isChFirstA ? 1 : -1;
else {
//如果数字不等,直接比较数字大小
return numa - numb;
}
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);
}
list.sort(function(a,b){
return fileWithExtCompare(a.name, b.name)
});
list.sort(SortLikeWin);
}
}catch(e){

Loading…
Cancel
Save