Array.sort’un en güzel özelliği, sort işlemini yaparken callBack fonksiyon çağırabilmekti. Default olarak sıralama işlemi ASCII tablosuna göre lexicographical olarak yapılır. Yani 1,11,12,2,3 gibi... callBack kullanıldığında, fonksiyon 2 parametre alır. Yani birbiriyle mukayese ( compare ) edilecek iki şey... 3 adet sonuç oluşur;
Keza, numerik olarak sort ettiğimiz bu array’de, Array.reverse kullanırsak da, tersten sıralama yapmış oluruz.
Obje’ler ( nesneler ) içerisinde pek çok değişik tipi barından bir container ( taşıyıcı ) gibidir. Daha önceki örneklerimizde, herşeyin key : value zincirlerinden oluştuğunu belirtmiştik. Tüm datalarımız String lerden oluşmuştu. ( key’ler ve value’ler ) Şimdi ise, mixed dediğimiz, içinde Array, String, Object bulunan bir OBJE yapalım!
Gördüğünüz gibi, objemizin key’leri, String değil. Bu bakımdan, objUsers[ 'aryUsers' ] yerine, objUsers.aryUsers şeklinde bir kullanım var.
this şeklinde bir tanım var. Bu, bağlı olduğu obje’yi temsil ediyor. this.aryUsers diyerek, objUsers objesinden, key’i aryUsers olanı çağırdık! aryUsers’ın value’su ise bir Array.
Eğer objUsers[ 'aryUsers' ] desek ne olurdu?
Ekranda;
yazacaktı. Çünki init ederken demo için 4 adet user tanımlıydı :) Kullanıcıları, aryUsers objesine ( keza bunun karşışığı bir Array ) Array.push ile ekledik. Kullanıcıyı silerken, array içindeki index’i kullandık. Buffer yaptık, silmemiz gereken index dışındaki user’ları bu Buffer Array’e push ettik. İşimiz bitince, bu Buffer Array, artık bizim esas kullandığımız Array haline geldi. this.aryUsers = aryBuffer
Sort işlemi sırasında, dikkat ettiyseniz, sort’a parametre geçtik. Eğer parametre gelmiş ise sıralamayı DESCENDING ( yani Z’den A’ya ), değil ise ASCENDING ( yani A’dan Z’ye ) yaptık. Callback fonksiyonuna baktığımızda;
Şeklinde bir ifade var. Çünki sort etmeye çalıştığımız Array içinde OBJE var, ve bu OBJE’nin key’leri ile uğraşıyoruz. Yani a ve b dediğimiz şeyler, aslında a.user_name ve b.user_name. Demekki bu sort işini, kullanıcı şifresine göre yapsaydık; a.user_password ve b.user_password kullanacaktık.
Bonus olarak, sizlere 2 güzel döküman;