Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: bermartinv en 16 de Febrero 2016, 22:46

Título: JavaScript cómo ordenar un Array o arreglo de mayor a menor o al revés CU01153E
Publicado por: bermartinv en 16 de Febrero 2016, 22:46
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>
Título: Re:CU01153E Arrays
Publicado por: pedro,, 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.
Título: Re:CU01153E Arrays
Publicado por: bermartinv 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, 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.
Título: Re:CU01153E Arrays
Publicado por: pedro,, 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.
Título: Re:CU01153E Arrays
Publicado por: bermartinv en 19 de Febrero 2016, 09:37
Gracias Pedro,  :o echemosle un vistazo