2013-06-05 5 views
0

J'essaie de trier un tableau d'objets par un champ qui contient une valeur numérique. Et cette sortie de la console est le résultat de l'appel:Tri d'un tableau par champ numérique dans un objet

console.log(_.sortBy(d, 'userid'));

[Object, Object, Object] 
0: Object 
count: "6" 
name: "Andrey" 
userid: "1234" 
__proto__: Object 
1: Object 
count: "9" 
name: "Lucas" 
userid: "1337" 
__proto__: Object 
2: Object 
count: "30" 
name: "M" 
userid: "7800" 

Et il semble bien, comme je l'attends que cela se produise.

Cependant quand j'appelle ceci:

console.log(_.sortBy(d, 'count'));

Au lieu de voir tableau de compte d'ordre 6, compte 9, compter 30, je vois ceci:

Array[3] 
0: Object 
count: "30" 
name: "M" 
userid: "7800" 
__proto__: Object 
1: Object 
count: "6" 
name: "Andrey" 
userid: "1234" 
__proto__: Object 
2: Object 
count: "9" 
name: "Lucas" 
userid: "1337" 

Quelqu'un peut-il me aider à comprendre Qu'est-ce qui se passe et comment puis-je le réparer?

+6

Je ne vois aucune valeur numérique. Ils sont tous des ficelles. '" 9 "' est différent de '9', surtout quand il s'agit de comparaisons – Ian

+1

Et c'est le tri correct," 30 "(le" 3 ") est avant" 6 ", ce qui est avant" 9 ". – Johan

+1

Vous avez eu de la chance avec votre tri par userid, en ce sens qu'ils sont aussi classés par ordre croissant en ordre alphabétique croissant. mettez aussi un userid dedans avec la valeur de "" 7 "' et vous verrez ce qui se passe. –

Répondre

1

Utilisez parseInt(obj.count) avant de trier.

+0

J'ai utilisé cette fonction lors de l'ajout d'éléments à mon tableau. Merci pour une réponse utile. – LucasSeveryn