JavaScriptIntermedio8 oct 2025

¡El misterio del `sort()` mutante!

snippet.javascript
const originalArray = [{value: 3}, {value: 1}, {value: 2}];
const sortedArray = originalArray.sort((a, b) => a.value - b.value);

console.log('Original array:', originalArray);
console.log('Sorted array:', sortedArray);

¿Qué crees que imprime?

Salida Esperada

Original array: [ { value: 3 }, { value: 1 }, { value: 2 } ]
Sorted array: [ { value: 1 }, { value: 2 }, { value: 3 } ]

⚠️ Salida Real

Original array: [ { value: 1 }, { value: 2 }, { value: 3 } ]
Sorted array: [ { value: 1 }, { value: 2 }, { value: 3 } ]

¿Por qué pasa esto?

¡**`Array.prototype.sort()` en JavaScript es un ninja silencioso!** 🥷 No solo te devuelve el array ordenado, ¡sino que también MUTILA el array original! 🔪 - Pensabas que `sortedArray` era una copia? ¡Ja! Es solo una referencia al mismo array original, ahora ordenado. - ¿Por qué hace esto JS? Misterios del lenguaje... ¡pero es crucial saberlo! **Moraleja:** Si necesitas el array original intacto, clónalo ANTES de ordenarlo. Usa `[...originalArray].sort()` o `originalArray.slice().sort()` para evitar sorpresas desagradables. 💥

Conceptos relacionados

mutationarraysside-effects