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