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 originala=3
b=0
b=a
b+=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 originalfuroyaArr=["gato","negro"]
furOtrArr=[]
furOtrArr=furoyaArr
furOtrArr[1]="blanco"
window.console.log("furoyaArr="+furoyaArr) //Va a salir ["gato","blanco"]
window.console.log("furOtrArr="+furOtrArr) //Va a salir ["gato","blanco"]
//Así que comparten la misma posición de memoria.
//Ahora mi ejemplo
miArr=["hola","mundo"]
miOtrArr=[]
// igualo los valores de un array con los valores del otro,como variables cualquiera, no igualo los array directamente
miOtrArr[0]=miArr[0]
miOtrArr[1]=miArr[1]
miOtrArr[0]="chau"
window.console.log("miArr="+miArr) //Va a salir ["hola","mundo"]
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 originallogArr=function(arr,marg)
{
for (clave in arr)
{
if(arr[clave].constructor.toString().indexOf("Array")!="-1")
{
window.console.log(marg+'Arr["'+clave+'"] Es un Array:')
logArr(arr[clave],marg+" ")
}
else
{
window.console.log(marg+'Arr["'+clave+'"]='+arr[clave])
}
}
}
cpArr=function(obj,arr)
{
for(clave in arr)
{
if(arr[clave].constructor.toString().indexOf("Array")!="-1")
{
obj[clave]=[]
cpArr(obj[clave],arr[clave])
}
else
{
obj[clave]=arr[clave]
}
}
}
miArr=[["hola","chau"],"mundo",["tan",["cruel","bello"]]]
cpDeArr=[]
cpArr(cpDeArr,miArr)
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