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

100
Vistas
Función con nombre no anónimo para ordenar objetos multidimensionales por el valor de la subclave ESPECIFICADA

Tengo un objeto (no una matriz):

 var people = {}; people['Zanny'] = {date: 447, last: 'Smith'}; people['Nancy'] = {date: 947, last: 'William'}; people['Jen'] = {date: 147, last: 'Roberts'};

A diferencia de esta pregunta de clasificación genérica , necesito especificar el valor de la subclave para clasificar, en este caso: date . En aras de la simplicidad, eliminé los primeros siete dígitos de las fechas, ya que eso no es importante.

Después de la clasificación, el objeto debe clasificarse por los valores de la clave de date de la siguiente manera:

 people['Jen'] = {date: 147, last: 'Roberts'};//147 is the lowest/first value. people['Zanny'] = {date: 447, last: 'Smith'}; people['Nancy'] = {date: 947, last: 'William'};//947 is the highest/last value.

Necesito crear una función nombrada no anónima reutilizable con dos parámetros obvios: el object y la key cuyo valor se basa la clasificación. He pasado algún tiempo tratando de experimentar con lo siguiente sin ningún éxito todavía:

 function array_sort_by_values(o, k) { return Object.entries(o).sort().reduce(function (result, key) { //console.log(result,key); result[key][k] = o[key][k]; return result; }, {}); }
  • No puedo usar o.sort ya que es para tipos de matrices (aunque JavaScript afirma que todo es un objeto y que las "matrices" no existen).
  • No puedo enfatizar demasiado que debo poder especificar el nombre de la clave, ya que necesito usar esta forma de clasificación para algunas cosas diferentes. ¿Qué me estoy perdiendo aquí?
  • Absolutamente sin marcos o bibliotecas.
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

¿Qué hay de convertir un objeto en una matriz para ordenar y volver a convertir?

 var people = {}; people['Zanny'] = {date: 447, last: 'Smith'}; people['Nancy'] = {date: 947, last: 'William'}; people['Jen'] = {date: 147, last: 'Roberts'}; console.log(Object.fromEntries(Object.entries(people).sort((a,b) => { return a[1].date - b[1].date })))

 var people = {}; people['Zanny'] = {date: 447, last: 'Smith'}; people['Nancy'] = {date: 947, last: 'William'}; people['Jen'] = {date: 147, last: 'Roberts'}; console.log(Object.fromEntries(Object.entries(people).sort(([,a],[,b]) => { return a.date - b.date })))

Como una función nombrada:

 function array_sort_by_values(o, k) { return Object.fromEntries(Object.entries(o).sort((a,b) => {return a[1][k] - b[1][k]})); }

Para mantener los cambios en vigor, el objeto debe reasignarse:

 people = array_sort_by_values(people, 'date'); console.log(people); array_sort_by_values(people, 'last') console.log(people);
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