Autor Tema: JavaScript: cómo ordenar alfabeticamente un Array (arreglo de palabras) CU01153E  (Leído 4029 veces)

C3PO

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Hola. Tras leer las diferentes soluciones (para el ejercicio 2), todas ellas muy ingeniosas, aportadas por mis compañeros en el foro.

Citar
EJERCICIO 2

Crea un script donde sea posible ordenar palabras por orden alfabético sin tener en cuenta la existencia de mayúsculas o minúsculas. Por ejemplo, declarar var miArray=['Moto', 'soto', 'Abaco', 'abeja', 'Sapo', 'nieve', 'Zumba, 'barco'] y tras ordenar obtener =[ 'Abaco', 'abeja', 'barco', 'Moto', 'nieve', 'Sapo', 'soto', 'Zumba].

He decidido intentar hacerlo usando solamente "las herramientas" vistas hasta ahora en el curso. Dejo aquí el código para cualquier comentario que me queráis hacer sobre el mismo. ("Se aprende más de la crítica que de la lisonja")

Código: [Seleccionar]
<!-- EJERCICIO 2-->
<!DOCTYPE html>

<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">

<script type="text/javascript">

function ejemplo() {

var arrayOriginal=['Moto','soto','Abaco','abeja','Sapo','nieve','Zumba','barco'];
var miArray=['Moto','soto','Abaco','abeja','Sapo','nieve','Zumba','barco'];
var arrayPos= new Array();
var arrayOriginalFinal=new Array();

var arrayMinus= miArray.toString();
var arrayMinusDesordenado= miArray.toString();

arrayMinus=arrayMinus.toLowerCase();
arrayMinusDesordenado=arrayMinusDesordenado.toLowerCase();

arrayMinus=arrayMinus.split(",");
arrayMinusDesordenado=arrayMinusDesordenado.split(",");

arrayMinus=arrayMinus.sort();

for (i=0;i<arrayMinus.length;i++){
var pal=arrayMinus[i];
var pos=arrayMinusDesordenado.indexOf(pal);
arrayPos[i]=pos;
}

for (i=0;i<arrayOriginal.length;i++){
arrayOriginalFinal[i]=arrayOriginal[arrayPos[i]];
}

alert('El array ordenado queda así: \n'+arrayOriginalFinal);

}


</script>

</head>

<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>

<div style="color:blue;" id ="pulsador" onclick="ejemplo()"> Probar </div>

</body>
</html>

Un saludo.



« Última modificación: 19 de Abril 2016, 10:36 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola! El código funciona bien. Para mantener ordenados los foros es preferible incluir siempre el código de todos los ejercicios de una entrega, en este caso faltaría el código del ejercicio 1 de esta entrega

Estoy contigo: la crítica si es sana ayuda a aprender y mejorar, por eso intentaré hacer una crítica sana ;)

En primer lugar al ver el ejercicio me ha llamado la atención los nombres de variables que utilizas. Me parecen un tanto confusos, y creo que el código mejoraría si les dieras nombres más descriptivos.

Por ejemplo, en lugar de arrayOriginalFinal me parecería más adecuado arrayOrdenado

En casos como este:

Código: [Seleccionar]
var arrayOriginal=['Moto','soto','Abaco','abeja','Sapo','nieve','Zumba','barco'];
var miArray=['Moto','soto','Abaco','abeja','Sapo','nieve','Zumba','barco'];

Estás declarando dos arrays iguales (uno tiene el mismo contenido que otro). Esto en principio debe evitarse, pero si se considera necesario (por ejemplo para poder operar sin perder la ordenación inicial) en lugar de darle dos nombres que hagan que parezcan distintas cosas, veo más razonable ponerle como nombre arrayOriginal y copiaDeArrayOriginal ó duplicadoArrayOriginal. De ese modo queda más claro que se trabaja con una copia o duplicado. Si no se hace así, en un código de cientos de líneas no nos acordaremos de que esos dos arrays eran uno copia del otro inicialmente.

Cuando tengas que hacer una copia o duplicado te recomiendo buscar métodos específicos. Escribir a mano la copia es fuente de errores.

Por ejemplo en el caso anterior puedes usar

var arrayOriginal=['Moto','soto','Abaco','abeja','Sapo','nieve','Zumba','barco'];
var miArray=arrayOriginal.slice(0);

El código en general lo veo bien

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".