Efecto de clasificación de archivos de Windows de imitación basado en JS por nombre
función
SortLikeWin(v1,
v2)
{
var
a
=
v1.nombre;
var
b
=
v2.nombre;
v2.nombre;
var
reg
=
/[ 0-9]+/g;
var
lista
=
a.match(reg);
var
listab
=
b.match(reg);
if
(!lista p>
||
! listab)
{
Regresar
a.localeCompare(b);
}
para
(var
i
=
0,
minLen
=
Math.min(lista.length,
listb.indexOf(listb[i]);
// Prefijo delante del número
var
prefixa
=
a.substring(0,
indexa);
var
prefijob
=
a.substring(0,
indexb );
//Cadena numérica
var
stra
=
lista[i]
var
strb
=
listb[i];
// valor del número<; /p>
p>
var
numa
=
parseInt(stra);
var p>
numb
=
parseInt(strb);
// Si los números de serie de los números no son iguales o los prefijos no son iguales, es decir, los prefijos son diferentes, compararlos directamente
// p>
if
(indexa
!=
índiceb
||
prefijo
! =
prefijob)
{
return
a.localeCompare(b);
}
else
{
//Congruencia de cadenas de números
if
( stra
==
strb)
{
//Compara el sufijo del número si es el último número
if
( i
==
minLen
-)
1)
{
p>return
a.substring( indexa).
localeCompare(b.substring(indexb));
}
//Si no es el último dígito, el bucle saltará al siguiente dígito y eliminará la misma parte anterior
else
{
a
=
a.substring(indexa
+
stra.longitud);
b
=
b.substring(indexa
+
stra.lastIndexOf(numb
+
'')
-
stra.lastIndexOf(numa
+
'');
}
else
{
/ /Si los números no son iguales, compara los números directamente
Return
numa
-
numb;
}
}
}
}