Müqayisə funksiyası nə qaytarır?
sort massivi yerində dəyişir və həmin massivi qaytarır. Müqayisə funksiyası mənfi nəticə verəndə a b-dən əvvəl, müsbət nəticə verəndə sonra, sıfırda isə bərabər sıralama üstünlüyündə qalır. Dəqiq -1 və 1 qaytarmaq məcburi deyil; işarə vacibdir.
const values = [4, 12, 2, 8];
const ascending = [...values].sort((a, b) => a - b);
const descending = [...values].sort((a, b) => b - a);
console.log(ascending); // [2,4,8,12]
console.log(descending); // [12,8,4,2]
console.log(values); // [4,12,2,8]
const names = ['Leyla', 'Aysel', 'Murad'];
console.log([...names].sort((a, b) => b.localeCompare(a, 'az')));
Adi səhvlər
Müqayisə funksiyası verilməsə dəyərlər mətn kimi sıralanır; buna görə ədədlərdə 12 və 2 gözlənilməz sıraya düşə bilər. a > b kimi yalnız boolean qaytaran funksiya düzgün müqayisə müqaviləsini ödəmir.
Obyektləri məsələn (a, b) => a.price - b.price ilə sırala. İlkin ardıcıllıq lazımdırsa əvvəl səthi surət çıxar; obyektlərin öz xassələri yenə eyni istinadlarla qalır. Kiçik massivdə nəticəni və ilkin massivin dəyişib-dəyişmədiyini ayrıca yoxla.