Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

127
Vistas
Ordene las claves de objeto por la cantidad de elementos en la matriz almacenada en cada uno en JavaScript

Tengo un proyecto en el que recibo una lista de productos que luego agrupo por fabricante. Quiero mostrarlos mediante programación en la página, pero debo hacerlo en orden de mayor a menor cantidad de productos. Necesito idear un algoritmo para ordenar las claves de objeto de la mayoría de los productos a la menor cantidad de productos.

Aquí hay un ejemplo simplificado de lo que tengo y a dónde debo llegar:

 let devices = { Sony: [ {name: 'Experia 1', productCode: 's1'}, {name: 'Experia 2', productCode: 's2'} ], Apple: [ {name: 'iPhone 8', productCode: 'a1'}, {name: 'iPhone 9', productCode: 'a2'}, {name: 'iPhone 10', productCode: 'a3'}, {name: 'iPhone 11', productCode: 'a4'} ], Huawei : [ {name: 'S 21', productCode: 'h1'} ], LG: [ {name: 'V60', productCode: 'l1'}, {name: 'V60 Ultra', productCode: 'l2'}, {name: 'G7', productCode: 'l3'} ] }

Necesito ordenar los datos para que comience con el fabricante con más y luego descienda al fabricante con menos. Por lo tanto, debe modificarse para que se vea así:

 { Apple: [ {name: 'iPhone 8', productCode: 'a1'}, {name: 'iPhone 9', productCode: 'a2'}, {name: 'iPhone 10', productCode: 'a3'}, {name: 'iPhone 11', productCode: 'a4'} ], LG: [ {name: 'V60', productCode: 'l1'}, {name: 'V60 Ultra', productCode: 'l2'}, {name: 'G7', productCode: 'l3'} ] Sony: [ {name: 'Experia 1', productCode: 's1'}, {name: 'Experia 2', productCode: 's2'} ], Huawei : [ {name: 'S 21', productCode: 'h1'} ], }

Los dispositivos que se ofrecen variarán con frecuencia, por lo que debo ordenar estos datos cada vez que el usuario acceda a la página. Por eso estoy buscando la sintaxis más corta posible para lograr esto.

Estoy encontrando tutoriales sobre cómo ordenar alfabéticamente las claves de los objetos y otros algoritmos relacionados de manera similar, pero ninguno que haga exactamente esto. Empecé a intentar personalizar algunos algoritmos de clasificación básicos, pero la manipulación de datos no es mi punto fuerte, por lo que están fallando o se están convirtiendo en un lío de códigos de espagueti inflados.

¿Hay una manera corta y fácil de convertir los datos como se describe? Tal vez haya un método de clasificación o un patrón de diseño que se adapte particularmente bien a la tarea. He estado investigando los comandos de lodash, pero no encuentro nada que salte inmediatamente como solución.

Estaría muy agradecido por cualquier consejo que alguien pudiera ofrecer. Gracias de antemano

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede convertirlo en una matriz, ordenarlo por longitud y volver a convertirlo en un objeto.

 let devices = { Sony: [ {name: 'Experia 1', productCode: 's1'}, {name: 'Experia 2', productCode: 's2'} ], Apple: [ {name: 'iPhone 8', productCode: 'a1'}, {name: 'iPhone 9', productCode: 'a2'}, {name: 'iPhone 10', productCode: 'a3'}, {name: 'iPhone 11', productCode: 'a4'} ], Huawei : [ {name: 'S 21', productCode: 'h1'} ], LG: [ {name: 'V60', productCode: 'l1'}, {name: 'V60 Ultra', productCode: 'l2'}, {name: 'G7', productCode: 'l3'} ] } devices = Object.fromEntries(Object.entries(devices).sort( (a,b) => b[1].length - a[1].length)); console.log(devices)

Si está recorriendo el objeto, no lo volvería a convertir en un objeto, solo usaría Object.entries y generaría mis datos en función de eso.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda