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

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

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 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!