更新 'SrcJyAlist.js'

master
src48597962 2 years ago
parent 299d6001df
commit ab74bb2220
  1. 136
      SrcJyAlist.js

@ -41,90 +41,10 @@ function getlist(data,isdir) {
let list = data.filter(item => {
return isdir ? item.is_dir : fileFilter?contain.test(item.name):item.is_dir==0;
})
try{
/*
if(!isdir){
list = list.sort((a, b) => {
let reg = /^[A-z]/;
if (reg.test(a.name) || reg.test(b.name)) {
if (a.name > b.name) {
return 1;
} else if (a.name < b.name) {
return -1;
} else {
return 0;
}
} else if (/第.*?集/.test(a.name) && /第.*?集/.test(b.name)) {
if (parseInt(a.name.replace(/第(.*?)集/,'$1')) < parseInt(b.name.replace(/第(.*?)集/,'$1'))) {
return -1;
} else if (parseInt(a.name.replace(/第(.*?)集/,'$1')) == parseInt(b.name.replace(/第(.*?)集/,'$1'))) {
return 0;
} else {
return 1;
}
} else {
return a.name.localeCompare(b.name, "zh");
}
})
}
*/
try{
if(!isdir){
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;
}
}
}
}
list.sort(SortLikeWin);
list.sort(SortList);
}
}catch(e){
log(e.message);
}
@ -305,4 +225,56 @@ function alistSearch(alistapi,key) {
}catch(e){
log(e.message);
}
}
function SortList(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;
}
}
}
}
Loading…
Cancel
Save