Clasificación en JavaScript | Explicado

Clasificación en JavaScript | Explicado
JavaScript viene con una gran cantidad de métodos y funciones para completar ciertas tareas. Estos métodos ayudan al clasificar una matriz. Clasificar significa organizar un conjunto de valores en un orden específico, puede ser un orden ascendente o descendente. Como las matrices son una parte integral de la programación, clasificarlas es una tarea importante y crucial. Hay muchos algoritmos triviales para clasificar matrices, pero ¿por qué el trabajo duro cuando JavaScript viene con métodos de clasificación predefinidos?.

Vamos a revisar una matriz con valores de cadena y valores numéricos utilizando funciones de JavaScript incorporadas.

.Método sort ()

El .clasificar() El método se utiliza para ordenar una matriz. El orden de la matriz ordenada es alfabéticamente ascendente. Funciona mejor para los valores de cadena pero produce resultados incorrectos cuando se trata de valores numéricos. Ahora se produce la pregunta por qué el .El método sort () no funciona para valores numéricos.

Para saber por qué el .El método sort () funciona para las cadenas pero no para los valores numéricos, primero tenemos que entender cómo el .El método sort () funciona.

Cómo hace el .Sort () Método Funcionamiento

El .clasificar() El método funciona comparando el primer carácter de la cadena con el primer carácter desde el siguiente valor. Si los personajes son los mismos, entonces verificará el segundo de ambas cuerdas y colocará la más pequeña primero. Más pequeño se decide sobre la base del orden alfabético, como en el ejemplo anterior "C" es más pequeña que "F".

Entonces, cuando pasamos esto ".clasificar()"Método dos valores numéricos como" 200 "y" 65 ". Esta función compara los primeros caracteres ("2" de "200" y "6" de "65") y devuelve "65" como el número más grande. Sin embargo, en este tutorial, también pasaremos por un ejemplo en el que clasificaremos los números usando .clasificar() método. Comencemos discutir y comprender la sintaxis del .clasificar() método.

Sintaxis

La sintaxis del .El método sort () es bastante básico. Es:

formación.clasificar()

Valor de retorno: Una matriz ordenada.

Por ejemplo, tomemos una matriz con diferentes elementos dentro de él:

Array = ["Table", "Silla", "vidrio", "mouse", "laptop", "ventilador", "auto"];

Para ordenar esto y mostrar la salida, vamos a usar el .Método sort () dentro de la consola.Método log (), como así:

consola.registro (matriz.clasificar());

El fragmento de código completo se convertiría en:

Array = ["Table", "Silla", "vidrio", "mouse", "laptop", "ventilador", "auto"];
consola.registro (matriz.clasificar());

Ejecute el programa para observar la salida:

.Función reverse ()

El .La función inverso () no clasifica una matriz en ningún orden. Sin embargo, invierte el posicionamiento de elementos dentro de la matriz. Lo que significa que el último elemento de una matriz se convierte en el primer elemento. La sintaxis es como:

formación.contrarrestar()

Si tomamos la matriz del ejemplo anterior e intentamos revertirla usando el .método reverse (), entonces el fragmento de código sería algo como esto.

Array = ["Table", "Silla", "vidrio", "mouse", "laptop", "ventilador", "auto"];
consola.registro (matriz.contrarrestar());

La salida es como:

Como puede ver, los elementos de una matriz ahora están en orden inverso. Pero, ¿cómo ordenamos realmente una matriz en orden descendente??

Cómo ordenar los valores de la matriz en orden descendente?

Bueno, tenemos que usar una combinación de la .clasificar() y el .contrarrestar() método. Primero ordenamos una matriz y luego usamos el .contrarrestar() Método para ordenar la matriz en orden descendente.

Esto suena un poco confuso, así que intentemos observar un ejemplo. Para este ejemplo, tome la matriz de los ejemplos anteriores.

Array = ["Table", "Silla", "vidrio", "mouse", "laptop", "ventilador", "auto"];

Ahora que tenemos una matriz en un orden completamente aleatorio. El primer paso es ordenarlo, así que hagamos eso: usar

formación.clasificar()

Ahora que la matriz está ordenada, necesitamos revertirla usando la siguiente línea:

formación.contrarrestar();

El último paso es observar la salida, y para hacerlo vamos a mostrar la matriz utilizando el consola.registro() Método como este:

consola.log (matriz);

El fragmento de código completo es como

Array = ["Table", "Silla", "vidrio", "mouse", "laptop", "ventilador", "auto"];
formación.clasificar();
formación.contrarrestar();
consola.log (matriz);

La salida es como:

Eso es todo, esa es nuestra matriz ordenada en orden alfabético descendente. Ahora veamos cómo trabajar con valores numéricos.

Cómo ordenar los valores numéricos usando .Método sort ()

Como ya hemos mencionado anteriormente, el .clasificar() El método no produce resultados correctos cuando se trata de clasificar valores numéricos, y eso se debe a que el .clasificar() El método funciona comparando cadenas, considera que los valores numéricos son cadenas y luego las compara.

Comencemos creando una variedad de valores numéricos. Al igual que.

NumberArray = [2,3,4,6,66,100,25,33]

Ahora, observemos la salida ejecutando el. clasificar() método en esta matriz dentro del consola.registro() función

consola.registro (numberArray.clasificar());

La salida es como:

Como puede ver, el resultado está fuera de lugar. Por qué es así?. Bueno, ya hemos explicado cómo el .El método sort () funciona. Lo que sucede es que toma el primer carácter de la cadena y lo compara con los primeros caracteres del siguiente valor, aunque 100 es más grande que 33. Pero, cuando comparas los primeros caracteres, "1" es más pequeño que "3", por lo tanto, 100 se colocan antes de 33.

Entonces solucionamos este problema? Bueno, lo hacemos usando una función de comparación dentro de la función de clasificación. La función de comparación es como:

función (a, b)

regresar A-B

Tomamos el "numberarray"Del ejemplo anterior y aplique esta función de comparación para observar la salida.

NumberArray = [2, 3, 4, 6, 66, 100, 25, 33];
numberarray.sort (función (a, b)
devolver a - b;
);
consola.log (numberArray);

Con esto, obtenemos la siguiente salida.

Como puede ver, finalmente tenemos nuestra matriz de números ordenada en orden descendente.

Cómo ordenar los valores numéricos en orden descendente?

Ahora que estamos familiarizados con la clasificación de una matriz numérica en orden ascendente, podemos comenzar a tratar de ordenarlo en orden descendente. Al igual que tratar de ordenar las cadenas en orden descendente, podemos usar el método reverse () para revertir la matriz clasificada numérica de la misma manera:

NumberArray = [2, 3, 4, 6, 66, 100, 25, 33];
numberarray.sort (function (x, y)
regreso x - y;
);
numberarray.contrarrestar();
consola.log (numberArray);

La salida es como:

Sin embargo, hay otra forma de hacerlo, y es cambiar la declaración de retorno en la función de comparación. Cambie la declaración a esto:

regresar B-A;

Después de eso, simplemente imprimimos la matriz usando el consola.registro() método. El fragmento de código completo es como:

NumberArray = [2, 3, 4, 6, 66, 100, 25, 33];
numberarray.sort (function (x, y)
regresar y - x;
);
consola.log (numberArray);

La salida será:

Cómo ordenar las matrices de objetos en JavaScript

Imagine que tenemos una variedad de objetos, por ejemplo, tomemos objetos de personas con su nombre y su año de nacimiento.

Ahora queremos ordenar esta matriz por el año en que nacieron. Tenemos la matriz de objetos de la gente como:

Const People = [
Nombre: "Albert", Yob: 1997,
Nombre: "Dave", Yob: 2005,
Nombre: "John", Yob: 2000
];

Ahora podemos ordenar esta matriz de objetos usando .sort () y compare la función como:

gente.sort (function (x, y)
regreso x.Yob - X.gamberro;
);

Ahora lo último es mostrar esta matriz usando el siguiente código:

consola.log ("las personas en orden de edad son como");
para (deja i = 0; yo <= people.length; i++)
consola.Log (gente [i].el nombre + "nace en" + personas [i].gamberro);

El fragmento de código completo es como:

Const People = [
Nombre: "Albert", Yob: 1997,
Nombre: "Dave", Yob: 2005,
Nombre: "John", Yob: 2000,
];
gente.sort (function (x, y)
regreso x.Yob - Y.gamberro;
);
consola.log ("las personas en orden de edad son como");
para (deja i = 0; yo <= people.length; i++)
consola.Log (gente [i].el nombre + "nace en" + personas [i].gamberro);

Cuando ejecutamos el archivo obtenemos la siguiente salida:

Como podemos ver, todos los objetos ahora se clasifican en función de su "yob", que es el año de nacimiento de la persona.
Eso es todo para clasificar en JavaScript.

Conclusión

La clasificación es una parte esencial cuando se trabaja con matrices. JavaScript viene con varias funciones incorporadas que nos ayudan a clasificar los elementos de matriz. Aprendimos cómo el .clasificar() El método funciona en JavaScript, su sintaxis y su valor de retorno. Además, aprendimos a usar la combinación de .clasificar() y .contrarrestar() Método para clasificar las matrices en orden descendente. Por último, aprendimos cómo podemos usar el .clasificar() Método para clasificar valores numéricos utilizando la función Compare.