2014-01-02 3 views
-2

Im пытаясь отсортировать объекты JSon из MongoDB этой формы:Java скрипт сортировкой не работает должным образом

{"_id" : 99999999, "dni": 99999999, "marks" : 7} 

У меня есть массив объектов, как это и им пытаются сортировать его «попугаев»:

myArray.sort(function(o1, o2){ return o1.marks < o2.marks }); 

Но это, похоже, не работает ... Что я делаю неправильно?

+3

доказать это. что происходит, что выходит, и что вы ожидали выйти. –

+0

Есть опечатка на функции, возможно, это тоже не помогает? –

+0

Это работает, если вы вводите функцию, а не fuction? – adeneo

ответ

4

Попробуйте

myArray.sort(function(o1, o2){ return o1.marks - o2.marks }); 

Функция сортировки не должна возвращать логическое значение, но отрицательный, 0, или положительное значение. Here are the docs. Возвращение 0, когда значения равны, важно, потому что алгоритм сортировки будет выполнять множество сравнений, и не гарантируется, что один элемент всегда находится в левой части сравнения.

И в зависимости от ваших индексов вы можете также позволить MongoDB сделать сортировку:

db.col.find({}).sort({marks: 1}); 
+0

Должен по-прежнему работать, и я думаю, что 'return o1.marks adeneo

+0

Он отлично работал, спасибо! – Netwave

+0

@adeneo это не двухгосударственный, а трехгосударственный. Ваше предложение верно, если у вас есть уникальные значения. – hgoebl

Смежные вопросы