roadmap.az

Menyu

JavaScript & DOMDərs 14 / 25

Massivin çeşidlənməsi

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')));
Nümunə

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.

Əlavə qeydlər və mənbələr

sort mövcud massivi yerində dəyişir və həmin massivə istinadı qaytarır. Rəqəmlər üçün müqayisə funksiyası ver; ilkin ardıcıllıq lazım olduqda əvvəl spread ilə surət çıxar.

Niyə vacibdir?

JavaScript istifadəçi hərəkətinə cavab verən və məlumatı emal edən səhifələr yaratmağa imkan verir.

Əvvəlki biliklər

Bu mövzuda

  • sort və mutasiya
  • Müqayisə funksiyasının işarəsi
  • Ədədlər və mətnlərin sıralanması

Mövzuya baxış

Mənbələr

Məşqin idarəetməsi
Addım 1 / 3

Sıralamanı dəyiş

Eyni ədədləri artan və azalan qaydada müqayisə et.

Hədəf: Azalan sıranı seç.

Canlı nəticə

Giriş41228
Nəticə24812
Mənbə kodu
[...items].sort((a, b) => a - b)

Özün sına

Ədədləri artan, adları azalan sıra ilə sırala. Hər iki halda ilkin massivi saxla və təkrarlanan dəyərləri yoxla.

Nəticəni necə yoxlayım?

Ədədlər ədədi qaydada sıralanır; ilkin massiv qorunur və müqayisənin mənfi, sıfır, müsbət nəticələri izah edilir.

Gözlənilən nəticə

  • Artan ədədlər 1, 2, 2, 7, 10 olur; təkrarlar saxlanır.
  • Adlar Zaur, Nigar, Aysel, Aysel sırasındadır və ilkin massivlər dəyişmir.
[1,2,2,7,10]
["Zaur","Nigar","Aysel","Aysel"]
[10,2,2,7,1]
Nümunə həllə bax

Əvvəl özün sına, sonra müqayisə et. Bu, mümkün həllərdən biridir.

sort surət üzərində işləyir. Ədədlər üçün müqayisə funksiyası, adlar üçün isə localeCompare verilir.

main.js

const numbers = [10, 2, 2, 7, 1];
const names = ['Nigar', 'Aysel', 'Aysel', 'Zaur'];
const sortedNumbers = [...numbers].sort((a, b) => a - b);
const sortedNames = [...names].sort((a, b) => b.localeCompare(a, 'az'));
console.log(JSON.stringify(sortedNumbers));
console.log(JSON.stringify(sortedNames));
console.log(JSON.stringify(numbers));

Praktikanı bitirdin?Özün qiymətləndirirsən. İrəliləyiş bu brauzerdə saxlanılır.