Foros del Web » Programando para Internet » Javascript »

Reasignar la dirección de memoria de un vector en Javascript

Estas en el tema de Reasignar la dirección de memoria de un vector en Javascript en el foro de Javascript en Foros del Web. Increíble. No sabía que Javascript funcionaba así. Si creo dos vectores, y a uno le asigno el contenido del otro, ¡será una copia idéntica y ...
  #1 (permalink)  
Antiguo 17/09/2009, 09:42
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 11 meses
Puntos: 6
Reasignar la dirección de memoria de un vector en Javascript

Increíble. No sabía que Javascript funcionaba así. Si creo dos vectores, y a uno le asigno el contenido del otro, ¡será una copia idéntica y lo que modifiques en el primero afectará al segundo!

Vamos, que se tratan de igual modo que en C.

Mi duda es: ¿cómo copiar el contenido de un vector en otro (sin ir elemento a elemento mediante un bucle, ya que así obviamente se salta el problema. Aunque no hay duda de que es una solución), pero que sea en una dirección de memoria nueva?

Es decir, tengo los vectores vector 1 y vector2, y quiero volcar los datos de vector1 en vector2, sin que luego los cambios en vector1 me afecten a vector2.

La solución

vector2=vector1

no funciona, es la causante del problema. La solución de asignar valores uno a uno, sin duda funcionaría. Pero ya que estoy, me gustaría saber si hay otra solución más elegante o directa (tal como definir la dirección de memoria que ocupará un vector, o similar).

PD: ¿Significa esta similitud con C, que en Javascript también se puede trabajar con punteros?

Última edición por un_tio; 17/09/2009 a las 09:48
  #2 (permalink)  
Antiguo 17/09/2009, 10:38
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 7 meses
Puntos: 834
Respuesta: Reasignar la dirección de memoria de un vector en Javascript

Pasa también con los objetos. Tendrás que crear una función que lo solvente:
http://blog.scriptia.net/articulos/2...y-objetos.html
O usar algo como esto:
Código:
<script>
var a=[1,2,3];
var b=[].concat(a);
b.push(4);
alert(a);
alert(b);
</script>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:08.