Ordenamiento de arreglos de JavaScript
- Página anterior Búsqueda de array JS
- Página siguiente Iteración de arrays JS
sort()
El método es uno de los métodos más poderosos de arrays.
Ordenamiento de arrays
sort()
El método ordena los arrays en orden alfabético:
Ejemplo
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Ordena los elementos en fruits
Invierte el array
reverse()
El método invierte los elementos del array.
Puede usarlo para ordenar el array en orden descendente:
Ejemplo
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Ordena los elementos en fruits fruits.reverse(); // Invierte el orden de los elementos
Ordenamiento numérico
Por defecto,sort()
La función ordenaCadenasordenar los valores.
Esta función es adecuada para cadenas ("Apple" se colocará antes de "Banana").
Sin embargo, si los números se ordenan como cadenas, "25" es mayor que "100", porque "2" es mayor que "1".
Por lo tanto,sort()
El método produce resultados incorrectos al ordenar números.
A través de unaFunción de比值Para corregir este problema:
Ejemplo
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
Usa la misma técnica para ordenar el array en orden descendente:
Ejemplo
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
Función de比值
El objetivo de la función de comparación es definir otro orden de clasificación.
La función de comparación debe devolver un valor negativo, cero o positivo, dependiendo de los parámetros:
function(a, b){return a-b}
Cuando sort()
Al comparar dos valores, la función envía los valores a la función de comparación y ordena estos valores según el valor devuelto (negativo, cero o positivo).
Ejemplo:
Al comparar 40 y 100,sort()
El método llama a la función de comparación function(40,100).
La función calcula 40-100 y luego devuelve -60 (valor negativo).
La función de ordenamiento colocará 40 antes de 100.
Puede usar el siguiente fragmento de código para probar el orden numérico y alfabético:
<button onclick="myFunction1()">Ordenar por letra</button> <button onclick="myFunction2()">Ordenar por número</button> <p id="demo"></p> <script> var points = [40, 100, 1, 5, 25, 10]; document.getElementById("demo").innerHTML = points; function myFunction1() { points.sort(); document.getElementById("demo").innerHTML = points; } function myFunction2() { points.sort(function(a, b){return a - b}); document.getElementById("demo").innerHTML = points; } </script>
ordenar el array en orden aleatorio
Ejemplo
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
Buscar el valor más alto (o más bajo) del array
JavaScript no proporciona una función integrada para encontrar el valor más alto o más bajo de un array.
Sin embargo, después de ordenar el array, puede usar índices para obtener el valor más alto o más bajo.
ordenamiento creciente:
Ejemplo
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // Ahora points[0] contiene el valor más bajo // Y points[points.length-1] contiene el valor más alto
ordenamiento decreciente:
Ejemplo
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // Ahora points[0] contiene el valor más alto // Y points[points.length-1] contiene el valor más bajo
Si solo necesita encontrar el valor más alto o más bajo, ordenar todo el array es un método extremadamente ineficiente.
aplicar Math.max() al array
Puede usar Math.max.apply
para encontrar el valor más alto del array:
Ejemplo
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
igual a Math.max(1, 2, 3)
.
aplicar Math.min() al array
Puede usar Math.min.apply
para encontrar el valor más bajo del array:
Ejemplo
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
igual a Math.min(1, 2, 3)
.
Mis métodos Min / Max de JavaScript
El método más rápido es usar un método "hecho a mano".
Esta función recorre el array, comparando cada valor con el valor más alto encontrado:
ejemplo (buscar Max)
function myArrayMax(arr) { var len = arr.length var max = -Infinity; while (len--) { if (arr[len] > max) { max = arr[len]; } } return max; }
Esta función recorre el array, comparando cada valor con el valor más bajo encontrado:
ejemplo (buscar Min)
function myArrayMin(arr) { var len = arr.length var min = Infinity; while (len--) { if (arr[len] < min) { min = arr[len]; } } return min; }
Ordenar arrays de objetos
Los arrays de JavaScript a menudo contienen objetos:
Ejemplo
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
Incluso si los objetos tienen propiedades de tipos de datos diferentes,sort()
Este método aún se puede usar para ordenar arrays.
La solución es comparar valores de atributos mediante una función de comparación:
Ejemplo
cars.sort(function(a, b){return a.year - b.year});
La comparación de propiedades de cadenas es un poco más compleja:
Ejemplo
cars.sort(function(a, b){ var x = a.type.toLowerCase(); var y = b.type.toLowerCase(); if (x < y) {return -1;} if (x > y) {return 1;} return 0; });
- Página anterior Búsqueda de array JS
- Página siguiente Iteración de arrays JS