JavaScriptPrincipiante9 oct 2025
¡El Orden de los Factores SÍ Altera el Producto... Si JavaScript lo Dice!
snippet.javascript
const numbers = [10, 1, 20, 2, 30, 3];
numbers.sort();
console.log(numbers);¿Qué crees que imprime?
✅ Salida Esperada
[1, 2, 3, 10, 20, 30]⚠️ Salida Real
[1, 10, 2, 20, 3, 30]¿Por qué pasa esto?
Prepárense para la sorpresa, porque `Array.prototype.sort()` en JavaScript es más caprichoso que un gato en una pasarela. 😼
- Cuando no le das una función de comparación, `sort()` se comporta como un bibliotecario que solo sabe leer el alfabeto. Convierte **TODO** a **cadenas de texto** y las ordena ¡lexicográficamente! 📚
- Así, el `10` se convierte en `'10'`, el `2` en `'2'`. Y en el mundo de las letras, `'10'` viene antes que `'2'` (porque '1' es menor que '2' alfabéticamente). ¡Es como si 'Manzana' viniera antes que 'Banana' y '10' viniera antes que '2'! 🤯
- El resultado es que tus números, que esperabas ver ordenados de menor a mayor, terminan en un guirigay alfabético. ¡Un caos numérico cortesía de la **conversión a string implícita**!
Para poner orden en esta fiesta, siempre dale a `sort()` una función de comparación: `(a, b) => a - b`. ¡Así tus números sabrán comportarse! ✨
Conceptos relacionados
array-sortstring-conversiondefault-behavior