Massiv metodlari
Massivlar ko'plab metodlarga ega. O'rganishni osonlashtirish uchun ularni guruhlarga ajratamiz: elementlarni qo'shish/o'chirish, qismini olish, qidirish, aylanib chiqish, saralash va massivni bitta qiymatga yig'ish (reduce).
Elementlarni qo'shish va o'chirish
Massiv oxiri va boshi bilan ishlash uchun bir nechta metodni allaqachon bilamiz:
arr.push(...items)โ oxiriga element qo'shadi;arr.pop()โ oxirgi elementni olib tashlaydi va qaytaradi;arr.shift()โ birinchi elementni olib tashlaydi va qaytaradi;arr.unshift(...items)โ boshiga element qo'shadi.
Endi eng kuchli metod โ splice bilan tanishamiz. U massivning istalgan joyidan element o'chira oladi, qo'sha oladi va almashtira oladi.
Sintaksis: arr.splice(start, deleteCount, elem1, ..., elemN). U start indeksidan boshlab deleteCount ta elementni o'chiradi va o'rniga elem1..elemN larni qo'yadi. O'chirilgan elementlardan iborat massivni qaytaradi.
splice ham o'chirib, ham o'rniga qo'ya oladi:
Agar deleteCount ni 0 qilsak, hech narsa o'chirilmaydi โ faqat qo'shiladi:
start manfiy bo'lishi mumkin. Bu holda u oxiridan sanaladi: -1 โ oxirgi element, -2 โ oxiridan bittasi va hokazo.slice โ qismini nusxalash
Metod arr.slice(start, end) massivning start dan end gacha (end o'z ichiga olmaydi) bo'lgan qismini yangi massiv qilib qaytaradi. Asl massivni o'zgartirmaydi.
arr.slice() massivning to'liq (sayoz) nusxasini yaratishning eng qulay usuli hisoblanadi.concat โ massivlarni birlashtirish
Metod arr.concat(...args) asl massiv elementlarini va argument sifatida berilgan qiymatlarni birlashtirib, yangi massiv qaytaradi.
forEach โ har bir element bo'yicha yurish
Metod arr.forEach(funksiya) massivning har bir elementi uchun berilgan funksiyani chaqiradi. U hech narsa qaytarmaydi (undefined).
Funksiya uch argument oladi: (item, index, array) โ element qiymati, uning indeksi va massivning o'zi. Ko'pincha faqat birinchi ikkisi kerak bo'ladi.
Massivda qidirish: indexOf, includes, find, findIndex
Metod arr.indexOf(item) elementni boshidan qidiradi va topilsa indeksini, topilmasa -1 ni qaytaradi. arr.lastIndexOf(item) esa oxiridan qidiradi.
Metod arr.includes(item) element mavjud bo'lsa true, aks holda false qaytaradi โ mavjudlikni tekshirish uchun qulay.
indexOf tenglikni === orqali tekshiradi, shuning uchun NaN ni hech qachon topa olmaydi. Bunday holatda includes ishlatiladi.Ba'zan shart bo'yicha (masalan, ma'lum xususiyatga ega obyektni) qidirish kerak bo'ladi. Bunda arr.find(funksiya) yordam beradi โ u funksiya birinchi marta true qaytargan elementni beradi.
find mos element topilmasa undefined, findIndex esa -1 qaytaradi. findLastIndex oxiridan qidiradi.filter โ shartga mos elementlarni saralash
find bitta element qaytaradi. Agar shartga mos barcha elementlar kerak bo'lsa, arr.filter(funksiya) ishlatiladi. U funksiya true qaytargan barcha elementlardan yangi massiv tuzadi.
map โ har bir elementni o'zgartirish
Metod arr.map(funksiya) โ massivlar bilan ishlashda eng ko'p ishlatiladigan metodlardan biri. U har bir elementga funksiyani qo'llaydi va natijalardan yangi massiv qaytaradi.
sort โ saralash (taqqoslash funksiyasi bilan!)
Metod arr.sort() massivni o'z joyida (asl massivni o'zgartirib) saralaydi va o'zini qaytaradi. Ammo muhim tuzoq bor:
sort elementlarni satr (string) sifatida saralaydi! Shuning uchun [1, 2, 15] emas, balki [1, 15, 2] chiqadi โ chunki '15' < '2' (lug'aviy taqqoslash).To'g'ri saralash uchun sort ga taqqoslash funksiyasi beriladi. U ikki argument (a, b) oladi va: a avval kelishi kerak bo'lsa manfiy son, b avval kelishi kerak bo'lsa musbat son, teng bo'lsa 0 qaytarishi kerak.
Sonlar uchun qisqartirilgan usul โ shunchaki ayirmani qaytarish. Kamayish tartibi uchun argumentlarni almashtiring:
str.localeCompare dan foydalaning: arr.sort((a, b) => a.localeCompare(b)).reverse, split va join
Metod arr.reverse() massiv elementlarini teskari tartibda qo'yadi (o'z joyida).
Metod str.split(delim) satrni berilgan ajratuvchi bo'yicha massivga bo'ladi. Aksincha, arr.join(glue) massiv elementlarini yopishtirib satr hosil qiladi.
str.split('') (bo'sh satr bilan) satrni harflarga ajratadi. split ga ikkinchi argument sifatida limit berish mumkin โ natija massivi uzunligini cheklaydi.reduce va reduceRight โ massivni bitta qiymatga yig'ish
Ba'zan massiv asosida bitta qiymat hisoblash kerak: yig'indi, eng katta element, obyekt va hokazo. Buning uchun arr.reduce ishlatiladi.
Sintaksis: arr.reduce(function(akkumulyator, item, index, array) { ... }, boshlang'ich). Funksiya har bir element uchun chaqiriladi va uning natijasi keyingi chaqiruvga akkumulyator bo'lib uzatiladi.
Ishlash bosqichma-bosqich (boshlang'ich = 0): 0+1=1, 1+2=3, 3+3=6, 6+4=10, 10+5=15.
reduce birinchi elementni boshlang'ich sifatida oladi va ikkinchidan boshlaydi. Bo'sh massivda boshlang'ichsiz reduce xatolik beradi! Shuning uchun ko'p hollarda boshlang'ich qiymatni berish tavsiya etiladi.arr.reduceRight xuddi shunday ishlaydi, lekin massivni o'ngdan chapga aylanib chiqadi.
Array.isArray โ massivmi yoki yo'q?
Massivlar alohida tur emas, ular object turiga asoslangan. Shuning uchun typeof massivni obyektdan ajrata olmaydi:
sort, find, filter) funksiyaga qo'shimcha thisArg argumentini qabul qiladi โ u funksiya ichidagi this ni belgilaydi. Amalda arrow funksiyalar bilan bu deyarli kerak bo'lmaydi.Xulosa
- Qo'shish/o'chirish:
push/pop,shift/unshift, universalsplice; - Qismini olish:
slice; birlashtirish:concat; - Aylanib chiqish:
forEach; - Qidirish:
indexOf/lastIndexOf,includes,find/findIndex; - Transformatsiya:
filter(saralab olish),map(o'zgartirish),sort(albatta taqqoslash funksiyasi bilan!),reverse; - Satr bilan bog'liq:
splitvajoin; - Yig'ish:
reduce/reduceRight; - Tekshirish:
Array.isArray.