Dlaczego to dziala?

0

Witam
Mam nastepujacy problem... chociaz w zasadzie moznaby sie klocic nad nazwaniem tego problemem.
Otoz mam tablice z lista uzytkownikow (czyli obiekty) i kazdy ma swoj nick, id itd. i potrzebuje ich losowo pokolejkowac.
A wiec zbieram sobie ich id, do tymczasowej tablicy po kolei wpisuje te id w losowej kolejnosci a pozniej w oparciu o taka losowo kolejke z tymi id kazdemu uzytkownikowi w oryginalnej tablicy nadaje odpowiedni numer w kolejce. Tu raczej problemow nie - wszytsko dziala.
Ale teraz kiedy w oryginalnej tablicy mam do kazdego uzytkownika dopisany jego numer w kolejce to fajnie byloby ich w tej tablicy posortowac wedlug ich kolejnosc w kolejce. Do tego problemu nie do konca wiedzialem jak sie zabrac ale napisalem kawalek kodu, w zasadzie bez wiary, ze zadziala, wyglada on nastepujaco:

var sa = new Array({id: 1, queue: 2, nick: 'Tester'}, {id: 2, queue: 1, nick: 'Tester2'});
console.log('Przed sortowaniem');
console.log(sa);

sa.sort(function(a, b){return a-b;});

console.log('Po sortowaniu');
console.log(sa);

Tutaj oczywiscie dla przykladu stworzylem nowa tablice i na sztywno dodalem kolejek i inne wartosci ale nie w tym rzecz. Dlaczego ten kod dziala? Przeciez mamy kilka wartosci, queue nie jest ani pierwsza ani ostatnia a sortuje ich wlasnie wedlug niej.
Zmienilem sobie troche kolejnosc i wartosci:

var sa = new Array({queue: 2, id: 1, nick: 'Tester2'}, {queue: 1, id: 2, nick: 'Tester3'});

O dziwo nadal dziala. Dlaczego ten skrypt bierze pod uwage wlasnie wartosc queue? Chyba, ze jest to tylko zludzenie.
Moglby mi ktos to wyjasnic?

Z gory dziekuje
Pozdrawiam

0

ale to nie dziala P => http://jsbin.com/vutozeyaxo/1/edit?html,js,console,output bo nie sortuje, bo nie ebdzie sortowac dopoki w function nie pdoasz a.queue i b.queue

0

Jak dla mnie dziala - uklada obiekty w tablicy wedlug wartosci queue, przynajmniej w kazdym wyprobowanym przeze mnie wariancie, ale dla spokoju ducha dodalem, tylko nie w function w sensie w parametrach zeby ktos zle nie zrozumial tylko w return :)

function(a, b) {return a.queue-b.queue;}

1 użytkowników online, w tym zalogowanych: 0, gości: 1