Massivlarni saralash
Alifbo tartibida tartiblashArray sort()Array reverse() Array toSorted() Array toReversed() Sorting Objects |
Raqamli saralashRaqamli saralashRandom Sort Math.min() Math.max() O‘zimiz yozgan Min() O‘zimiz yozgan Max() |
Massivni saralash
sort() usuli massivni alifbo tartibida tartiblaydi:
Misol
const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
O‘zingiz sinab ko‘ring »
Massivni teskari aylantirish
reverse() usuli massivdagi elementlarni teskari aylantiradi:
Misol
const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse();
O‘zingiz sinab ko‘ring »
sort() va reverse() ni birlashtirib,
massivni kamayish tartibida saralashingiz mumkin:
Misol
const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();
O‘zingiz sinab ko‘ring »
JavaScript Array toSorted() usuli
ES2023 asl massivni o‘zgartirmasdan massivni saralashning xavfsiz usuli sifatida toSorted() usulini qo‘shdi.
toSorted() va sort() o‘rtasidagi farq shundaki, birinchi usul asl massivni o‘zgarmagan holda yangi Array yaratadi, oxirgi usul esa asl massivni o‘zgartiradi.
Misol
const months = ["Jan", "Feb", "Mar", "Apr"];
const sorted = months.toSorted();
O‘zingiz sinab ko‘ring »
JavaScript Array toReversed() usuli
ES2023 toReversed() usulini asl massivni o‘zgartirmasdan massivni teskari o‘zgartirishning xavfsiz usuli sifatida qo‘shdi.
toReversed() va reverse() o‘rtasidagi farq shundaki, birinchi usul asl massivni o‘zgarmagan holda yangi Array yaratadi, oxirgi usul esa asl massivni o‘zgartiradi.
Misol
const months = ["Jan", "Feb", "Mar", "Apr"];
const reversed = months.toReversed();
O‘zingiz sinab ko‘ring »
Raqamli saralash
Odatiy bo‘lib, sort() funksiyasi qiymatlarni Stringlar sifatida tartiblaydi.
Bu Stringlar uchun yaxshi ishlaydi ("Olma" "Banan" dan oldin keladi).
Agar Numberlar String sifatida tartiblangan bo‘lsa, "25" "100" dan kattaroqdir, chunki "2" "1" dan katta.
Shu sababli, sort() usuli raqamlarni saralashda noto‘g‘ri natija beradi.
Buni solishtirish funksiyasini taqdim etish orqali tuzatishingiz mumkin:
Misol
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
O‘zingiz sinab ko‘ring »
Massivni kamayish bo‘yicha saralash uchun xuddi shu hiyladan foydalaning:
Misol
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
O‘zingiz sinab ko‘ring »
Taqqoslash funksiyasi
Taqqoslash funksiyasining maqsadi muqobil tartiblash tartibini aniqlashdir.
Taqqoslash funksiyasi argumentlarga qarab manfiy, nol yoki ijobiy qiymatni qaytarishi kerak:
function(a, b){return a - b}
sort() funksiyasi ikkita qiymatni solishtirganda qiymatlarni solishtirish funksiyasiga yuboradi va qiymatlarni qaytarilgan (salbiy, nol, musbat) qiymatga ko‘ra tartiblaydi.
Agar natija manfiy bo‘lsa, a b dan oldin tartiblanadi.
Natija ijobiy bo‘lsa, b adan oldin tartiblanadi.
Agar natija 0 bo‘lsa, ikkita qiymatning tartiblash tartibi bilan hech qanday o‘zgarishlar amalga oshirilmaydi.
Misol:
Taqqoslash funksiyasi massivdagi barcha qiymatlarni, bir vaqtning o‘zida ikkita qiymatni (a, b) solishtiradi.
40 va 100 ni solishtirganda sort() usuli solishtirish funksiyasini (40, 100) chaqiradi.
Funksiya 40 - 100 (a - b) ni hisoblaydi va natija manfiy (-60) bo‘lgani uchun tartiblash funksiyasi 40 ni 100 dan pastroq qiymat sifatida saralaydi.
Raqamli va alifbo tartibida tartiblash bilan tajriba o‘tkazish uchun ushbu kod parchasidan foydalanishingiz mumkin:
<button onclick="myFunction1()">Sort Alphabetically</button>
<button
onclick="myFunction2()">Sort Numerically</button>
<p id="demo"></p>
<script>
const points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;
function
myFunction1() {
points.sort();
document.getElementById("demo").innerHTML
= points;
}
function myFunction2() {
points.sort(function(a, b){return
a - b});
document.getElementById("demo").innerHTML = points;
}
</script>
O‘zingiz sinab ko‘ring »
Massivni tasodifiy tartibda saralash
Yuqorida aytib o‘tilganidek, tartiblash funksiyasidan foydalanib, raqamli massivni tasodifiy tartibda saralashingiz mumkin
Misol
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(){return 0.5 - Math.random()});
Fisher Yates usuli
Yuqoridagi misoldagi point.sort() usuli aniq emas. Bu ba’zi raqamlarni boshqalardan ustun qo‘yadi.
Eng mashhur to‘g‘ri usul Fisher Yates aralashish deb ataladi va 1938 yilda ma’lumotlar faniga kiritilgan!
JavaScript-da usulni bunga tarjima qilish mumkin:
Misol
const points = [40, 100, 1, 5, 25, 10];
for (let i = points.length -1; i > 0; i--) {
let j = Math.floor(Math.random() * (i+1));
let k = points[i];
points[i] = points[j];
points[j] = k;
}
Massivning eng past (yoki eng yuqori) qiymatini toping
Massivda maksimal yoki min qiymatni topish uchun o‘rnatilgan Functionlar mavjud emas.
Eng past yoki eng yuqori qiymatni topish uchun sizda 3 ta variant mavjud:
- Massivni tartiblang va birinchi yoki oxirgi elementni o‘qing
- Math.min() yoki Math.max() dan foydalaning
- Uyda ishlab chiqarilgan funksiyani yozing
Sort() yordamida Min yoki Maksni toping
Massivni tartiblaganingizdan so‘ng, siz eng yuqori va eng past qiymatlarni olish uchun indeksdan foydalanishingiz mumkin.
O‘sish bo‘yicha tartiblash:
Misol
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value
O‘zingiz sinab ko‘ring »
Kamaytirish bo‘yicha tartiblash:
Misol
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value
O‘zingiz sinab ko‘ring »
Agar siz faqat eng yuqori (yoki eng past) qiymatni topmoqchi bo‘lsangiz, butun massivni saralash juda samarasiz usuldir.
Massivda Math.min() dan foydalanish
Massivdagi eng past raqamni topish uchun Math.min.apply dan foydalanishingiz mumkin:
Math.min.apply(null, [1, 2, 3]) Math.min(1, 2, 3) ga teng.
Massivda Math.max() dan foydalanish
Massivdagi eng yuqori raqamni topish uchun Math.max.apply dan foydalanishingiz mumkin:
Math.max.apply(null, [1, 2, 3]) Math.max(1, 2, 3) ga ekvivalent.
JavaScript massivining minimal usuli
JavaScript massivida eng past qiymatni topish uchun o‘rnatilgan Function mavjud emas.
Eng past raqamni topish uchun eng tezkor kod bu uy qurilishi usulidan foydalanishdir.
Ushbu funksiya har bir qiymatni topilgan eng past qiymat bilan taqqoslaydigan Array bo‘ylab aylanadi:
Misol (daqiqani toping)
function myArrayMin(arr) {
let len = arr.length;
let min = Infinity;
while (len--) {
if (arr[len] < min) {
min = arr[len];
}
}
return min;
}
JavaScript massivining maksimal usuli
JavaScript massivida eng yuqori qiymatni topish uchun o‘rnatilgan Function mavjud emas.
Eng yuqori raqamni topish uchun eng tezkor kod bu uy qurilishi usulidan foydalanishdir.
Ushbu funksiya har bir qiymatni topilgan eng yuqori qiymat bilan taqqoslaydigan Array bo‘ylab aylanadi:
Misol (Maksni toping)
function myArrayMax(arr) {
let len = arr.length;
let max = -Infinity;
while (len--) {
if (arr[len] > max) {
max = arr[len];
}
}
return max;
}
Object massivlarini saralash
JavaScript massivlarida ko‘pincha obyektlar mavjud:
Misol
const cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}
];
Obyektlar turli xil ma’lumotlar turlarining xususiyatlariga ega bo‘lsa ham, massivni saralash uchun sort() usulidan foydalanish mumkin.
Yechim xususiyat qiymatlarini solishtirish uchun taqqoslash funksiyasini yozishdir:
String xususiyatlarini solishtirish biroz murakkabroq:
Misol
cars.sort(function(a, b){
let x = a.type.toLowerCase();
let y = b.type.toLowerCase();
if (x < y) {return -1;}
if (x > y) {return 1;}
return 0;
});
O‘zingiz sinab ko‘ring »
Barqaror Array sort()
ES2019 Array sort() usulini qayta ko‘rib chiqdi.
2019 yilgacha spetsifikatsiya QuickSort kabi beqaror tartiblash algoritmlariga ruxsat berdi.
ES2019 dan keyin brauzerlar barqaror tartiblash algoritmidan foydalanishlari kerak:
Elementlarni qiymat bo‘yicha saralashda elementlar bir xil qiymatga ega bo‘lgan boshqa elementlarga nisbatan o‘zlarining nisbiy o‘rnini saqlab qolishlari kerak.
Misol
const myArr = [
{name:"X00",price:100 },
{name:"X01",price:100 },
{name:"X02",price:100 },
{name:"X03",price:100 },
{name:"X04",price:110 },
{name:"X05",price:110 },
{name:"X06",price:110 },
{name:"X07",price:110 }
];
O‘zingiz sinab ko‘ring »
Yuqoridagi misolda, narx bo‘yicha saralashda natija boshqa nisbiy pozitsiyada nomlar bilan chiqishiga yo‘l qo‘yilmaydi:
X01 100
X03 100
X00 100
X02 100
X05 110
X04 110
X06 110
X07 110
Shuningdek qarang:
To‘liq JavaScript ma’lumotnomasi
To‘liq tavsiflar va ko‘plab misollar bilan JavaScript-ning barcha xususiyatlari va usullariga to‘liq ma’lumotnoma uchun quyidagi manzilga o‘ting:
W3Schools' Full JavaScript Reference.
Ushbu ma’lumotnoma 1999-yildan 2026-yilgacha bo‘lgan barcha JavaScript yangilanishlarini o‘z ichiga oladi.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
