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ó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