JavaScript - Invertir array

 
Vista:
sin imagen de perfil
Val: 11
Ha disminuido su posición en 8 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Invertir array

Publicado por Alberto (7 intervenciones) el 21/02/2018 00:31:20
Buenas tardes compañeros, espero que estén bien

El presente es para pedirles ayuda acerca de un problema que tengo con el comendo reverse() de JS,

Quiero invertir un array sin que modifique el original y mostrarlo en pantalla, pero resulta que al aplicar dicho comando, modifica el original. Les anexo el código JS y a ver si pueden ayudarme

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function revertir(loQueRecibe)
{
	const clone = Object.assign({}, loQueRecibe)
	console.log(clone);
	clone.vector.reverse();
 
	return clone
}
 
let a = {vector: ["o", 8, 5]}
let inversa = revertir(a);
 
console.log(a.vector)
console.log(inversa.vector);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Invertir array

Publicado por xve (2100 intervenciones) el 21/02/2018 09:03:58
Hola Alberto, el problema es que tienes que pasar el array por valor, no por referencia.... un simple ejemplo:

1
2
3
4
5
6
let a = ["o", 8, 5];
let b=a.slice();
b.reverse();
 
console.log(a)
console.log(b);

esto devolvera:
1
2
["o", 8, 5]
[5, 8, "o"]


Para tu ejemplo, te sirve esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
function revertir(loQueRecibe)
{
	let x=loQueRecibe.vector.slice();
	x.reverse();
 
	return {vector:x};
}
 
let a = {vector: ["o", 8, 5]}
let inversa = revertir(a);
 
console.log(a.vector)
console.log(inversa.vector);
</script>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha disminuido su posición en 8 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Invertir array

Publicado por Alberto (7 intervenciones) el 22/02/2018 02:41:14
Muchas gracias amigo, la verdad me ayudó mucho...
La verdad, no me quedó muy claro porqué tengo que hacer ese moviemiento, pero si funcionó.
Quiero decir, si hago reverse directamente, no funciona.
Si podrías explicarme, te lo agradecería
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Invertir array

Publicado por xve (2100 intervenciones) el 22/02/2018 08:58:35
Hol Alberto, el slice() hace una copia del array por valor... si no lo haces así, haces la copia por referencia, lo que quiere decir que las dos variables apuntan al mismo punto de memoria, por lo que si cambias un array, también se cambia el otro.

Se entiende? si no, coméntame y intento buscarte un ejemplo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar