3 ¿Como se comportan los punteros con los arrays La verdad de las funciones
Cómo se comportan los punteros con los arrays: La verdad detrás de las funciones en JavaScript
¡Hola, comunidad! 👋 ¿Cómo están? Espero que todo bien por ahí. Por acá, todo más que bien. Hoy vamos a hablar de un tema que parece básico pero que es fundamental para entender cómo funcionan los arrays y las funciones en JavaScript: los punteros y la manipulación de arrays.
🔄 Intercambiando elementos en un array
Imaginemos que queremos intercambiar dos elementos de un array. Por ejemplo, cambiar el elemento en la posición 2 (el número 5) con el de la posición 7 (el número 14).
let arr = [1, 2, 5, 4, 8, 10, 14, 3];❓ ¿Cómo lo hacemos?
Primero, debemos entender que en JavaScript, los arrays son objetos, y cuando los pasamos a una función, no se copia todo el array, sino que se pasa una referencia (similar a un puntero en otros lenguajes).
🧠 Entendiendo las referencias
Cuando declaramos:
let arr = [1, 2, 3, 4];arr no es el array en sí, sino un "puntero" que apunta a la dirección de memoria donde está almacenado el primer elemento.
Si pasamos arr a una función:
function swap(array) {
array[0] = "Hola";
}
swap(arr);
console.log(arr); // ["Hola", 2, 3, 4]¿Qué pasó? Modificamos el array original, porque array dentro de la función apunta al mismo lugar en memoria que arr.
✂️ ¿Y si queremos una copia real?
Si no queremos modificar el original, debemos crear una copia independiente. Podemos usar slice() o el operador de propagación (...):
function swap(array) {
let copia = array.slice(); // o [...array]
copia[0] = "Chao";
console.log(copia); // ["Chao", 2, 3, 4]
}
swap(arr);
console.log(arr); // ["Hola", 2, 3, 4] (el original no cambió)🔥 Conclusión
Los arrays se pasan por referencia, no por valor.
Si modificas un array dentro de una función, afectas al original.
Usa
slice()o[...array]si necesitas una copia independiente.
¿Les sorprendió este comportamiento? ¿Lo sabían? ¡Déjenme sus comentarios! 👇
🚀 ¿Quieren más contenido así? Suscríbanse y síganme para profundizar en estos conceptos.
✨ Bonus: Intercambiando elementos correctamente
Si quieren hacer un swap de elementos en un array, pueden hacerlo así:
function swapPositions(arr, pos1, pos2) {
[arr[pos1], arr[pos2]] = [arr[pos2], arr[pos1]]; // Destructuring
return arr;
}
console.log(swapPositions([1, 2, 3, 4], 0, 2)); // [3, 2, 1, 4]¡Espero que les sirva! ¿Qué otros temas quieren que cubra?
Comentarios
Publicar un comentario