Ver Mensaje Individual
  #14 (permalink)  
Antiguo 02/12/2004, 21:10
kepawe
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 22 años, 1 mes
Puntos: 5
Hola de nuevo a todos.

He cambiado la metódo "move" para que también pueda rotar los elemento a la derecha o izquierda, también otro método para ordenar aleatoriamente los elementos.
He añadido unas funciones que encuentro de gran utilidad para el método sort() que por defecto ordena alfabeticamente los elementos, he puesto comentarios en el código para explicar para que vale cada una.



Código PHP:

<html>
<
head>
<
title>Manipulaci&oacute;n de elementos de un array.</title>
<
script language=JavaScript type=text/javascript>
<!--

/*Sintaxis
nombre_array.move_to("right") - rota  los elementos a la derecha una posición
nombre_array.move_to("left") - rota  elementos a la izquierda una posición
nombre_array.move_to(1,5) - el primer argumento elemento a mover y el segundo
                              la posición.
por ejemplo move_to(1,5) [0,1,2,3,4,5,6] daria este resultado [0,2,3,4,5,1,6]

*/
Array.prototype.move_to = function(){
  
// rota los elementos a la derecha
  
if(arguments[0] == "right"){
    
a = this.length - 1
    b 
= 0
  
}
  
// rota los elementos a la izquierda
  
else if(arguments[0] == "left"){
    
a = 0
    b 
= this.length - 1
  
}
  
// mueve un elemento a una posición
  
else{
    
a = arguments[0]
    
b = arguments[1]
  }
  
a = a >= this.length ? this.length - 1 : a < 0 ? 0: a
  b 
= b >= this.length ? this.length - 1 : b < 0 ? 0: b

  
var element_move = this[a]
  if(
a < b){
    for(var 
ctr = a; ctr < b; ctr++){
          
this[ctr] = this[ctr+1]
     }
  }
  if(
a > b){
     for(var 
ctr = a; ctr > b; ctr--){
           
this[ctr] = this[ctr-1]
     }
  }
  
this[b] = element_move


}
/* mueve los elementos aleatorimente.
  la Sintaxis - nombre_del_array.random_array() */

Array.prototype.random_array = function(){
var 
ctr = 0
while(ctr < this.length){
    var 
a = Math.floor(this.length* Math.random())
    var 
b = Math.floor(this.length* Math.random())
    
this.move_to(a,b)
    
ctr++
  }

}
//  FUNCIONES PARA EL MÉTODO SORT()

// Esta función ordena los números de menor a mayor
/* Solo es valida para array donde todos sus valores
son numericos */
//Sintaxis - nombre_array.sort(numeric_sort_min)
function numeric_sort_min(element1, element2){
  return (
element1 - element2)

}

// Esta función ordena los números de mayor a menor
/* Solo es valida para array donde todos sus valores
son numericos */
//Sintaxis - nombre_array.sort(numeric_sort_max)
function numeric_sort_max(element1, element2){
  return (
element2 - element1)

}
// Ordena alfábeticamente pero en sentido inverso
//Sintaxis - nombre_array.sort(reverse_alpha_sort)
function reverse_alpha_sort(element1,element2){
  if(
element1 > element2){
    return -
1
  
}
  else if(
element1 < element2){
    return 
1
  
}
  else{
    return 
0
  
}

}
//
//-->
</script>



</head>

<body>
<center><div id="numeros"></div></center><br>
<script language=JavaScript type=text/javascript>
<!--


var my_array1 = new Array(0,1,2,3,4,5,6,7,8,9)



function show_array1(){
var msg1=""

    for (var ctr=0; ctr < my_array1.length; ctr++){
        if((my_array1[ctr] === 0) && (ctr != my_array1.length - 1)){msg1+=my_array1[ctr]+ ",".fontcolor("red")}
        else if(ctr == my_array1.length - 1){msg1+=my_array1[ctr]}
        else{msg1+=my_array1[ctr]+ ","}

    }
    document.getElementById("numeros").innerHTML = "my_array1= new Array(".bold().fontsize(6) +
                                                  msg1.bold().fontsize(6) +
                                                  ")".bold().fontsize(6)

}
show_array1()
//-->
</script>


  <form name="form1" onsubmit="return false"><center>
  <input type="button"  value="Rotar a la izquierda" onmouseup="my_array1.move_to('left');show_array1();">
  <input type="button"  value="Ordenar aleatoriamente" onmouseup="my_array1.random_array();show_array1();">
  <input type="button"  value="Rotar a la derecha" onmouseup="my_array1.move_to('right');show_array1();">
  <br>
  <input type="button"  value="Ordenar de mayor a menor" onclick="my_array1.sort(numeric_sort_max);show_array1();">
  <input type="button"  value="Ordenar de menor a mayor" onclick="my_array1.sort(numeric_sort_min);show_array1();"><br>
  Mover el elemento
  <input type="text"  name="el" value="0" size="5" onblur="if(isNaN(parseInt(this.value))){this.value='0'}">
  a la posición
  <input type="text" name="pos" value="5" size="5" onblur="if(isNaN(parseInt(this.value))){this.value='5'}">
  <input type="button"  value="Mover" onmouseup="my_array1.move_to(parseInt(this.form.el.value),parseInt(this.form.pos.value));show_array1();">
  </center>
</form>
</body>
</html> 
Saludos