Autor Tema: JavaScript cómo ordenar un Array o arreglo de mayor a menor o al revés CU01153E  (Leído 4276 veces)

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Solucion al ejercicio 1 de la entrega CU01153E del curso JavaScript desde cero:

Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<script>
function ordenar(){
    var miVector = [33, 2, 36, 55, 4, 1];
    var deMenorAMayor = [33, 2, 36, 55, 4, 1];
   
    var deMayorAMenor = miVector.sort(function (elem1,elem2){return elem2-elem1;});
   
    var deMenorAMayor = deMenorAMayor.sort(function (elem1,elem2){return elem1-elem2;});
   
    var texto1 = document.createElement('p');
   
    document.body.appendChild(texto1);
   
    texto1.innerHTML= miVector.valueOf();
   
    var texto2 = document.createElement('p');
   
    document.body.appendChild(texto2);
   
    texto2.innerHTML = 'El resultado de ordenar de mayor a menor es : '+deMayorAMenor.valueOf();
   
    var texto3 = document.createElement('p');
   
    document.body.appendChild(texto3);
   
    texto3.innerHTML= 'El resultado de ordenar de menor a mayor es: '+deMenorAMayor.valueOf();
   
}
</script>

</head>
<body>
    <button onclick="ordenar()">Ordenar</button>
</body>
</html>


Y para el ejercicio 2, no he sabido resolverlo por mi mismo y encontré por la red un algortimo para resolverlo.

Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<script>
   function compareIgnoreCase(a,b) {
        return (normalize(a) > normalize(b));
    }
    function normalize(a) {
        return a.toLowerCase()
                 .replace(/[Áá]/gi,"a").replace(/[Éé]/gi,"e").replace(/[Íí]/gi,"i")
                 .replace(/[Óó]/gi,"o").replace(/[Úú]/gi,"u").replace(/[Ññ]/gi,"nzz");
    }
   
   
    function ordenarVector(){
        var miArray = ['Moto', 'soto', 'Abaco', 'abeja', 'Sapo','nieve','Zumba','barco'];
        var ordMiArray = miArray.sort(compareIgnoreCase);
        var mostrar = document.createElement('p');
        document.body.appendChild(mostrar);
        mostrar.innerHTML =  ordMiArray.valueOf();
       
       
       
    }
</script>

</head>
<body>
   
</body>
<button onclick="ordenarVector()">Ordenar</button>
</html>
« Última modificación: 21 de Febrero 2016, 17:25 por César Krall »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU01153E Arrays
« Respuesta #1 en: 17 de Febrero 2016, 22:33 »
Hola bermartinv.

En el ejercicio 1, solo decir que no se muestra el array original, porque cuando lo muestras ya lo has ordenado usando sort, para solucionarlo, te valdría con inicializar la variable deMayorAMenor de la misma forma que los otros arrays.
Código: [Seleccionar]
var deMayorAMenor  = [33, 2, 36, 55, 4, 1];y cambiando esta linea:
Código: [Seleccionar]
var deMayorAMenor = miVector.sort(function (elem1,elem2){return elem2-elem1;});por esta:
Código: [Seleccionar]
deMayorAMenor = deMayorAMenor .sort(function (elem1,elem2){return elem2-elem1;});
Y otra cosa sería que has creado dos veces las mismas variables, en estas dos líneas te sobrarían los 'var'.
Código: [Seleccionar]
var deMayorAMenor = miVector.sort(function (elem1,elem2){return elem2-elem1;});
   
    var deMenorAMayor = deMenorAMayor.sort(function (elem1,elem2){return elem1-elem2;});

En definitiva, el código quedaría así:
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<script>
function ordenar(){
    var miVector = [33, 2, 36, 55, 4, 1];
    var deMenorAMayor = [33, 2, 36, 55, 4, 1];
var deMayorAMenor = [33, 2, 36, 55, 4, 1];
    deMayorAMenor = deMayorAMenor.sort(function (elem1,elem2){return elem2-elem1;});
    deMenorAMayor = deMenorAMayor.sort(function (elem1,elem2){return elem1-elem2;});
var texto1 = document.createElement('p');
    document.body.appendChild(texto1);
    texto1.innerHTML= miVector.valueOf();
    var texto2 = document.createElement('p');
    document.body.appendChild(texto2);
    texto2.innerHTML = 'El resultado de ordenar de mayor a menor es : '+deMayorAMenor.valueOf();
    var texto3 = document.createElement('p');
    document.body.appendChild(texto3);
    texto3.innerHTML= 'El resultado de ordenar de menor a mayor es: '+deMenorAMayor.valueOf();   
}
</script>
</head>
<body>
    <button onclick="ordenar()">Ordenar</button>
</body>
</html>

En cuanto al segundo ejercicio, está bien, hace lo que pide el enunciado, pero ¿podrías explicar el significado de estas dos líneas?, porque yo he probado el código sin ellas y funciona correctamente también.

Código: [Seleccionar]
.replace(/[Áá]/gi,"a").replace(/[Éé]/gi,"e").replace(/[Íí]/gi,"i")
                 .replace(/[Óó]/gi,"o").replace(/[Úú]/gi,"u").replace(/[Ññ]/gi,"nzz");

Saludos.

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Re:CU01153E Arrays
« Respuesta #2 en: 18 de Febrero 2016, 10:12 »
Gracias Pedro por contestar.
Para el primer ejercicio sique es verdad lo que dices, es preferible tener las tres variables miVector, deMayorAMenor y deMenorAMayor.He modificado el código de dos maneras,
  • Sin añadir la nueva variable y añadir el nodo de miVector antes de hacer las operaciones de ordenar
  • Creando las tres variables
Código 1:
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<script>
function ordenar(){
    var miVector = [33, 2, 36, 55, 4, 1];
   
    var deMenorAMayor = [33, 2, 36, 55, 4, 1];
   
    var texto1 = document.createElement('p');
   
    document.body.appendChild(texto1);
   
    texto1.innerHTML= miVector.valueOf();
   
    deMayorAMenor = miVector.sort(function (elem1,elem2){return elem2-elem1;});
   
    deMenorAMayor = deMenorAMayor.sort(function (elem1,elem2){return elem1-elem2;});
   
    var texto2 = document.createElement('p');
   
    document.body.appendChild(texto2);
   
    texto2.innerHTML = 'El resultado de ordenar de mayor a menor es : '+deMayorAMenor.valueOf();
   
    var texto3 = document.createElement('p');
   
    document.body.appendChild(texto3);
   
    texto3.innerHTML= 'El resultado de ordenar de menor a mayor es: '+deMenorAMayor.valueOf();
   
}
</script>

</head>
<body>
    <button onclick="ordenar()">Ordenar</button>
</body>
</html>
Código 2:
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<script>
function ordenar(){
    var miVector = [33, 2, 36, 55, 4, 1];
   
    var deMenorAMayor = [33, 2, 36, 55, 4, 1];
   
    var deMayorAMenor = [33, 2, 36, 55, 4, 1];
   
    deMayorAMenor = deMayorAMenor.sort(function (elem1,elem2){return elem2-elem1;});
   
    deMenorAMayor = deMenorAMayor.sort(function (elem1,elem2){return elem1-elem2;});
   
    var texto1 = document.createElement('p');
   
    document.body.appendChild(texto1);
   
    texto1.innerHTML= miVector.valueOf();
   
    var texto2 = document.createElement('p');
   
    document.body.appendChild(texto2);
   
    texto2.innerHTML = 'El resultado de ordenar de mayor a menor es : '+deMayorAMenor.valueOf();
   
    var texto3 = document.createElement('p');
   
    document.body.appendChild(texto3);
   
    texto3.innerHTML= 'El resultado de ordenar de menor a mayor es: '+deMenorAMayor.valueOf();
   
}
</script>

</head>
<body>
    <button onclick="ordenar()">Ordenar</button>
</body>
</html>

Para el segundo ejercicio,
ese trocito de código hace que se ordene sin tener en cuenta que la letra tenga esas posibiliades que ponemos ahí, como que tenga acento, etc. Por ejemplo si no estuviera este código y la palabra Abaco de nuestro array tuviera acento se colocaría al final de nuestro array. Sin embargo, con el código este se coloca en primer lugar.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU01153E Arrays
« Respuesta #3 en: 18 de Febrero 2016, 19:52 »
Buen aporte bermartinv, el ejercicio se podía resolver de varias formas.

Si no la vista ya, en este enlace hay otra forma de resolverlo.

https://www.aprenderaprogramar.com/foros/index.php?topic=3422.msg14957#msg14957

Saludos.

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Re:CU01153E Arrays
« Respuesta #4 en: 19 de Febrero 2016, 09:37 »
Gracias Pedro,  :o echemosle un vistazo

 

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".