Je veux utiliser la méthode de tri expliqué ici mais j'ai J'ai créé cette fonction dans laquelle je regroupe toutes les chaînes ensemble et ajoutez un compte (comme valeur pour la clé, voir ci-dessus) P> {
"TUBE": 1,
"DCS": 2,
"BREAKOUT": 6,
"RAISING": 8,
"REAR": 61,
"TOWER": 65,
"JACKS": 84,
"FEED": 114,
"INSTALLATION": 119,
"ASSEMBLY": 326,
"JACK": 334,
"HYDRAULIC": 1421,
"CYLINDER": 2986
}
5 Réponses :
Comme expliqué dans le DOC que vous avez lié, la fonction trier code> accepte un argument, c'est-à-dire le comparateur. Donc, si vous souhaitez trier un éventail d'objet par la touche CODE> INSTALLATION CODE>, vous pouvez simplement faire: array.sort(function(a,b) {return a.INSTALLATION - b.INSTALLATION})
Valeurs. Je parie qu'il signifie trier de 1 à 2986
combiner p> objet.keys (obj) code>, .sort () code> & .map code> const obj = {
"CYLINDER": 2986,
"HYDRAULIC": 1421,
"JACKS": 84,
"INSTALLATION": 119,
"REAR": 61,
"JACK": 334,
"TUBE": 1,
"FEED": 114,
"ASSEMBLY": 326,
"DCS": 2,
"TOWER": 65,
"RAISING": 8,
"BREAKOUT": 6,
}
var sorted = {};
console.log("Un-sorted", obj);
Object.keys(obj).sort().map(function(key){
sorted[key] = obj[key];
});
console.log("Sorted", sorted)
Qui trie par nom de clé, pas de valeur
Te première chose que vous aurez besoin de faire est de transformer vos propriétés de vos objets en une matrice, quelque chose sous la forme alors vous pouvez utiliser un tri. p> var input = {
"CYLINDER": 2986,
"HYDRAULIC": 1421,
"JACKS": 84,
"INSTALLATION": 119,
"REAR": 61,
"JACK": 334,
"TUBE": 1,
"FEED": 114,
"ASSEMBLY": 326,
"DCS": 2,
"TOWER": 65,
"RAISING": 8,
"BREAKOUT": 6,
};
var result = Object.keys(input)
.map( x => ({word:x, count:input[x]}))
.sort( (a,b) => a.count - b.count);
console.log(result);
Si vous modifiez la structure, vous pouvez également utiliser objet.entries () code> et bander le .map () code> appel: objet.tries (entrée). Trier ((A, B) => A [1] - B [1]) code>
@Andreas, mais vous perdez la clé qui est nécessaire pour le résultat ... sauf si je manque quelque chose.
Object.entries () Code> Retours: [[Clé, valeur], [Touche, valeur], ...] code>
Unsing objet.keys () code> et mappe code> comme suit, vous pouvez atteindre votre résultat attendu.
const list = {
"CYLINDER": 2986,
"HYDRAULIC": 1421,
"JACKS": 84,
"INSTALLATION": 119,
"REAR": 61,
"JACK": 334,
"TUBE": 1,
"FEED": 114,
"ASSEMBLY": 326,
"DCS": 2,
"TOWER": 65,
"RAISING": 8,
"BREAKOUT": 6,
};
var newList = {};
Object.keys(list).sort(function(a,b){return list[a]-list[b]})
.map(key => newList[key] = list[key]);
console.log(newList);
Nous avons finalement vu que c'est ce que l'OP signifiait. J'aurais aussi fait quelque chose comme ça aussi. Le puriste dira que vous ne pouvez pas compter sur la commande dans un objet de la valeur clé
L'OP a mis à jour sa question. J'ai pu obtenir son résultat attendu. Je ne suis pas sûr de ce que votre problème est.
Pas de problème. J'ai voté et applaudi. Mais comme je l'ai dit, Les gens ici affirmeront qu'on ne peut pas compter sur l'ordre dans une table de hachage
Peut-être que la carte est un peu trompeuse car vous utilisez un effet secondaire. Un foreach est plus approprié à mon avis mais tu étais toujours le premier à deviner / résoudre ce que OP voulait
Object.entries et une foreach Depuis la carte n'est pas la méthode la plus pertinente pour copier des valeurs de clé
et comme Epascarello mentionné, vous êtes meilleur avec un tableau réel puisque vous ne devez pas compter sur l'ordre de clé dans un objet p >
p>
const list = {
"CYLINDER": 2986,
"HYDRAULIC": 1421,
"JACKS": 84,
"INSTALLATION": 119,
"REAR": 61,
"JACK": 334,
"TUBE": 1,
"FEED": 114,
"ASSEMBLY": 326,
"DCS": 2,
"TOWER": 65,
"RAISING": 8,
"BREAKOUT": 6,
},newList = {}
Object.entries(list).sort((a,b) => a[1]-b[1])
.forEach(elm => newList[elm[0]] = elm[1])
console.log(newList);
Ne pense pas que vous pouvez trier un objet en JavaScript
Que veux-tu dire exactement? Vous avez un tableau d'objets comme ça?
Qu'essayez-vous de trier par? Par exemple, si la matrice contient l'objet que vous avez spécifié, plus celui qui est exactement identique à l'exception du tube est 5, votre objet vient-il avant le mien, mon objet vient-il avant le vôtre ou comptez-t-il comme étant égal?
Ils ne font pas dans l'exemple et s'ils l'ont fait, alors alphabétiquement serait ma suggestion
Trier () est pour les tableaux ..... Je crois que c'est un objet ... Trier () ne fonctionne pas avec des tableaux,
objet.keys (YourObj) .sort ((a, b) => Yourobj [a] - YourObj [B]) code>Veuillez afficher un exemple de votre sortie attendue
Enfin un exemple complet. C'est ce que je pensais que vous vouliez dire
Très désolé de ne pas dès le début décrivant ce que j'aimerais avoir comme résultat final.
Et juste un FYI: Tous les moteurs de navigateur / JS garantissent pas l'ordre d'objet. Donc, mieux d'utiliser une valorisation de matrice et de mappage.
S'appuyant sur l'ordre des propriétés d'objets des choses comme
pour ... dans code> ouobjet.keys () code> est une pratique très risquée et un sol fertile pour les bugs. Sémantiquement, une propriété est une propriété et l'ordre ne fait aucune différence dans la façon dont l'objet fonctionne réellement. Si vous voulez simplement faire cela à des fins de présentation, il existe des solutions plus simples.