0
votes

Obtenir des valeurs et des clés dans des tableaux séparés triés par des valeurs

Supposons que j'ai un objet {'a': 20, 'B': 6, 'c': 21, 'd': 12}

Après avoir trié par des valeurs en ordre décroissant, La sortie souhaitée: clés: ['C', 'A', 'D', 'B']] et Valeurs: [21,20,12,6] < / p>

Comment puis-je atteindre cela efficacement? Je suis venu savait que nous ne pouvons pas voulons trier les clés d'objet JS en fonction des valeurs, car l'ordre des clés est aléatoire à chaque fois.


0 commentaires

4 Réponses :


3
votes

Je suis venu savoir que nous ne pouvons pas nous ne pouvons pas trier les clés d'objet JS en fonction des valeurs, car l'ordre des clés est aléatoire à chaque fois. P>

Ce n'est pas vrai (ce n'est pas aléatoire, et ce n'est pas différent à chaque fois), mais trier JavaScript les objets em> est presque jamais utile. p>

Vous avez plusieurs options pour obtenir le tableau Vous avez montré. Un simple est d'utiliser objet.entries code> pour obtenir une matrice de [touche, valeur] code> tableaux, puis Trier code> qui, puis obtenez juste le Touches de l'it via mappe code>: p>

p>

const obj = {'a':20,'b':6,'c':21,'d':12};
const keys = [];
const values = [];
for (const [k, v] of Object.entries(obj).sort(([k1, v1], [k2, v2]) => v2 - v1)) {
    keys.push(k);
    values.push(v);
}
console.log(keys);
console.log(values);


4 commentaires

Monsieur Comment puis-je obtenir les valeurs dans un tableau séparé? @ T.J.


@Binayakgs - Vous souhaitez avoir une liste Touches et un parallèle valeurs tableau?


Oui. C'est là que je suis fait face à un blocage.


@Binayakgs - ajouté que.



0
votes

Essayez ceci.

p>

const list = {'a':20,'b':6,'c':21,'d':12};

let myObject = Object.fromEntries(Object.entries(list).sort( (a,b) => b[1] - a[1] ));

Object.prototype.mySplit = function() {
  return Object.keys(this).map((key) => {
    return {
      key: key,
      value: this[key]
    };
  });
}

let keys = [];
let values = [];

let properties = myObject.mySplit();
for (var i = 0; i < properties.length; i++) {
    keys.push(properties[i]['key']);
    values.push(properties[i]['value']);
}

console.log(keys);
console.log(values);


0 commentaires

1
votes
[
  { key: 'c', value: 21 },
  { key: 'a', value: 20 }
  { key: 'd', value: 12 }
  { key: 'b', value: 6 }
]

0 commentaires

0
votes

1) Obtenez des touches d'un objet

2) Touches de tri basées sur la comparaison de valeur P>

Réponse p>

{
sortedKeys:  ["c", "a", "d", "b"]
sortedValues: [21, 20, 12, 6]
}


0 commentaires