Ver Mensaje Individual
  #11 (permalink)  
Antiguo 26/04/2012, 00:24
pistonasos
 
Fecha de Ingreso: julio-2009
Ubicación: La Plata
Mensajes: 233
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: Transición de cinco imágenes.

Hola otra vez. ¿no probaste mi script?. Te pregunto, porque con éste script, aparte de que es una solución a arrays multidimensionales, no provoca que compartan la misma posición de memoria.
Como todos sabemos, si hacemos:

Código Javascript:
Ver original
  1. a=3
  2. b=0
  3. b=a
  4. b+=5
  5. alert("b es "+b+"  y a es "+a)
Nos va a salir: b es 8 y a es 3
Y mi script no asigna valores directamente como arrays, sino como variables,al igual que el caso anterior:
Código Javascript:
Ver original
  1. furoyaArr=["gato","negro"]
  2. furOtrArr=[]
  3.  
  4. furOtrArr=furoyaArr
  5. furOtrArr[1]="blanco"
  6.  
  7. window.console.log("furoyaArr="+furoyaArr) //Va a salir ["gato","blanco"]
  8. window.console.log("furOtrArr="+furOtrArr) //Va a salir ["gato","blanco"]
  9. //Así que comparten la misma posición de memoria.
  10.  
  11. //Ahora mi ejemplo
  12. miArr=["hola","mundo"]
  13. miOtrArr=[]
  14. // igualo los valores de un array con los valores del otro,como variables cualquiera, no igualo los array directamente
  15. miOtrArr[0]=miArr[0]
  16. miOtrArr[1]=miArr[1]
  17.  
  18. miOtrArr[0]="chau"
  19.  
  20. window.console.log("miArr="+miArr) //Va a salir ["hola","mundo"]
  21. window.console.log("miOtrArr="+miOtrArr) //Va a salir ["chau","mundo"]
Espero que me hallas entendido...
Con repecto al script, le hice una pequeña corrección y agregué una función que te logea la estructura del array para que trastees e investigues.
Lo que hace el script es prácticamente la solución que planteo en el script anterior, pero con un for automatizando la tarea.
Código Javascript:
Ver original
  1. logArr=function(arr,marg)
  2.         {
  3.             for (clave in arr)
  4.             {
  5.                 if(arr[clave].constructor.toString().indexOf("Array")!="-1")
  6.                 {
  7.                     window.console.log(marg+'Arr["'+clave+'"] Es un Array:')
  8.                     logArr(arr[clave],marg+"    ")
  9.                 }
  10.                 else
  11.                 {
  12.                     window.console.log(marg+'Arr["'+clave+'"]='+arr[clave])
  13.                 }
  14.             }
  15.         }
  16. cpArr=function(obj,arr)
  17.     {
  18.         for(clave in arr)
  19.         {
  20.             if(arr[clave].constructor.toString().indexOf("Array")!="-1")
  21.             {
  22.                  obj[clave]=[]
  23.                 cpArr(obj[clave],arr[clave])
  24.             }
  25.             else
  26.             {
  27.             obj[clave]=arr[clave]
  28.             }
  29.         }
  30.     }
  31.    
  32. miArr=[["hola","chau"],"mundo",["tan",["cruel","bello"]]]
  33. cpDeArr=[]
  34. cpArr(cpDeArr,miArr)
  35.  
  36.  
  37. logArr(cpDeArr,"")
Probá esto an algún navegador que soporte console.log. Después, cambiá los valores que quieras de cpDeArr y de miArr , loguealos con logArr y vas a ver que son independientes.
Salu2

Última edición por pistonasos; 27/04/2012 a las 17:47