Red de conocimiento informático - Material del sitio web - Efecto de clasificación de archivos de Windows de imitación basado en JS por nombre

Efecto de clasificación de archivos de Windows de imitación basado en JS por nombre

Haga un registro, principalmente para trabajar con números, que compare números por valor si están precedidos por la misma cantidad de caracteres, en lugar de comparar entre caracteres individuales.

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

||

! 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

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;

}

}

}

}