Ordenando arrays numéricos Recordando un poco de matemáticas sabemos que una lista de números se está ordenado ascendentemente si cada número de la lista es menor o igual
que el siguiente en la lista. De manera similar, una lista está ordenada descendentemente si cada número de la lista es mayor o igual que el siguiente en la lista. La manera más cómoda de representar una lista de números en javascript es colocarlos en arrays. Además, los arrays en javascript tienen dos métodos sort() y reverse() que ordenan los elementos del array. Sin embargo, veremos que si aplicamos estos métodos a arrays con cadenas el comportamiento (ordenación) se corresponde con el esperado. Pero si el array consta de números aparecen las sorpresas. Indice. 1.- El problema.Ordenando un array de números con los métodos sort() y reverse() Javascript está equivocado porque: a) ascendentemente "12 no es menor que 2" y "28 no es menor que 3"; b) descendentemente "3 no es mayor que 28" y "2 no es mayor que 12 Ordenando un array de letras con los métodos sort() y reverse() Javascript actúa correctamente porque ordena las letras en un estricto orden alfabético. La ordenación sort() o reverse() no sirven para ordenar números porque los ordena alfabéticamente y no matemáticamente. Es decir, un número dentro de un array es considerado por Javascript como una cadena y no como un número. 2.- Solución.
Es posible pasarle al método sort() una función (funciones) que modifique su comportamiento para adecuarloa la ordenación matemática. El esquema es array.sort(nueva_funcion_ordenadora). 3.- El código.function ordAscModif(a,b) Esta función modifica el método sort() ordenando los números ascedentemente. La llamada se hace así:
array_numeros.sort(ordAscModif)
function ordAscModif(a,b){
if (a < b) return -1;
if (a > b) return 1;
if (a = b) return 0;
}
function ordDescModif(a,b) Esta función modifica el método sort() ordenando los números descendentemente. La llamada se hace así: array_numeros.sort(ordDescModif)
function ordDescModif(a,b){
if (a < b) return 1;
if (a > b) return -1;
if (a = b) return 0;
}
|
MenúCategorías
Lo Último Mis programas Matemáticas Geometría Programación WEB Flash MX Variados |