Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

121
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!