¡Descubra cómo ordenar una matriz de objetos por un valor de propiedad en JavaScript!
Supongamos que tienes una matriz de objetos.
Es posible que tengas este problema: ¿cómo ordenas esta matriz de objetos por el valor de una propiedad?
Digamos que tienes una matriz de objetos como ésta:
const list = [ { color: 'white', size: 'XXL' }, { color: 'red', size: 'XL' }, { color: 'black', size: 'M' }]
Desea representar esta lista, pero primero desea ordenarla por el valor de una de las propiedades . Por ejemplo, desea ordenarla por el nombre del color, en orden alfabético: negro, rojo, blanco.
Puedes utilizar el sort()
método de Array
, que toma una función de devolución de llamada, que toma como parámetros 2 objetos contenidos en el array (a los que llamamos a
y b
):
list.sort((a, b) = (a.color b.color) ? 1 : -1)
Cuando devolvemos 1, la función comunica sort()
que el objeto b
tiene prioridad en la clasificación sobre el objeto a
. Devolver -1
haría lo contrario.Te recomendamos Zonas Azules
La función de devolución de llamada también podría calcular otras propiedades para manejar el caso en el que el color es el mismo y ordenar también por una propiedad secundaria:
list.sort((a, b) = (a.color b.color) ? 1 : (a.color === b.color) ? ((a.size b.size) ? 1 : -1) : -1 )
Tips para principiantes de JavaScript
Tal vez te puede interesar:
- Cómo generar un número aleatorio entre dos números en JavaScript
- Cómo esperar el evento DOM listo en JavaScript simple
- Cómo determinar si una fecha es hoy en JavaScript
- Cómo contar el número de propiedades en un objeto JavaScript
Cómo ordenar una matriz de objetos por un valor de propiedad en JavaScript
Supongamos que tienes una matriz de objetos. ¡Descubra cómo ordenar una matriz de objetos por un valor de propiedad en JavaScript! ¡Descubra cómo ordenar u
programar
es
2025-01-16
Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente