Skip to content

JavaScript Massivni Saralash (Array Sort)

Massiv elementlarini alfavit bo'yicha yoki raqamlar tartibida saralash uchun JavaScript-da bir nechta metodlar mavjud.


1. Alfavit bo'yicha saralash

  • sort(): Massiv elementlarini alfavit tartibida saralaydi.
  • reverse(): Massiv elementlarini teskari tartibda joylashtiradi.

Misol

js
const mevalar = ["Banan", "Apelsin", "Olma", "Mango"];

mevalar.sort(); // ["Apelsin", "Banan", "Mango", "Olma"]
mevalar.reverse(); // ["Olma", "Mango", "Banan", "Apelsin"]

2. Xavfsiz saralash: toSorted() va toReversed()

ES2023-da qo'shilgan bu metodlar original massivni o'zgartirmasdan, yangi saralangan massiv qaytaradi.

js
const oylar = ["Yan", "Fev", "Mar", "Apr"];
const saralangan = oylar.toSorted(); 
// "oylar" o'zgarmaydi, "saralangan" esa yangi massiv bo'ladi

3. Raqamlarni saralash (Numeric Sort)

Muhim: sort() metodi sukut bo'yicha qiymatlarni matn (string) sifatida saralaydi. Shuning uchun raqamlarni saralashda xatolik bo'lishi mumkin (masalan, "25" soni "100" dan katta deb topiladi, chunki "2" > "1").

Buni tuzatish uchun solishtirish funksiyasidan (compare function) foydalanish kerak:

O'sish tartibida (Ascending)

js
const sonlar = [40, 100, 1, 5, 25, 10];
sonlar.sort(function(a, b){ return a - b });
// Natija: [1, 5, 10, 25, 40, 100]

Kamayish tartibida (Descending)

js
const sonlar = [40, 100, 1, 5, 25, 10];
sonlar.sort(function(a, b){ return b - a });
// Natija: [100, 40, 25, 10, 5, 1]

4. Tasodifiy tartibda saralash (Random Sort)

Massivni tasodifiy (random) tartibda aralashtirish uchun:

js
const sonlar = [40, 100, 1, 5, 25, 10];
sonlar.sort(function(){ return 0.5 - Math.random() });

(Eslatma: Haqiqiy tasodifiylik uchun Fisher Yates algoritmidan foydalanish tavsiya etiladi).


5. Obyektlar massivini saralash

Agar massiv ichida obyektlar bo'lsa, ularning biror xususiyati (masalan, yili yoki nomi) bo'yicha saralash mumkin:

js
const mashinalar = [
  {tur: "Volvo", yil: 2016},
  {tur: "Saab", yil: 2001},
  {tur: "BMW", yil: 2010}
];

// Yili bo'yicha saralash
mashinalar.sort(function(a, b){ return a.yil - b.yil });

Xulosa

  • Alfavit uchun: sort()
  • Raqamlar uchun: sort((a,b) => a-b)
  • Originalni saqlash uchun: toSorted()
  • Teskari qilish uchun: reverse() yoki toReversed()