Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

271
Visualizações
Sorting keys of an object not working as expected- Javascript

I'm sorting the keys in the object:

My object:

data = {AAA: 1, BBB: 2, CCC: 55, VVV: 33, FFF:44}

I'm using the following code to sort:

Object.fromEntries(Object.entries(data).sort(([,v1], [,v2]) => +v2 - +v1))

however it outputs:

{CCC: 55, FFF: 44, VVV: 33, BBB: 2, AAA: 1}

I want to sort the keys in the object which should result:

{AAA: 1, BBB: 2, CCC: 55, FFF: 44, VVV: 33}

and if I try to change the sorting order, still gives results based on the count and not based on the key:

Object.fromEntries(Object.entries(data).sort(([,v1], [,v2]) => +v1 - +v2))

how can I make the above code work for both sorting value and sorting keys of an object?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

That is because you are sorting based on the value of the entries, not the key of the entries. Object.entries() returns a tuple in the following format: [key, value], yet you are only accessing and comparing the values as you are using [, v1] and [, v2]. Change these to [k1] and [k2] respectively (the name doesn't matter, it's the positional argument you're unpacking that matters).

Simply update your accessors to use the first entry in the tuple, which is the key, and use String.prototype.localeCompare:

Object.fromEntries(Object.entries(data).sort(([k1], [k2]) => k1.localeCompare(k2)))

See proof-of-concept below:

const data = {
  AAA: 1,
  BBB: 2,
  CCC: 55,
  VVV: 33,
  FFF: 44
};

console.log(Object.fromEntries(Object.entries(data).sort(([k1], [k2]) => k1.localeCompare(k2))));

about 4 years ago · Juan Pablo Isaza Relatório

0

const data = {
  AAA: 1,
  BBB: 2,
  CCC: 55,
  VVV: 33,
  FFF: 44
};

console.log(Object.fromEntries(Object.entries(data).sort(([k1], [k2]) => k1.localeCompare(k2))));

about 4 years ago · Juan Pablo Isaza Relatório

0

Can do it using reduce.

const data = {
  AAA: 1,
  BBB: 2,
  CCC: 55,
  VVV: 33,
  FFF: 44
};
const sorted = Object.keys(data)
  .sort()
  .reduce((obj, key) => {
    obj[key] = data[key];
    return obj;
  }, {});
console.log(sorted);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda