Massivlarni iteratsiya qilish

ES6'dan boshlab, massivning (yoki har qanday iteratsiya qilinadigan obyektning) har bir elementi bo'ylab aylanib chiqishning eng oson yo'li — bu §5.4.4-bo'limda batafsil yoritilgan for/of siklidir:

for/of sikli ishlatadigan ichki o'rnatilgan massiv iteratori massiv elementlarini o'sish tartibida qaytaradi. U siyrak massivlar uchun hech qanday alohida xususiyatga ega emas va mavjud bo'lmagan har qanday massiv elementi uchun shunchaki undefined qaytaradi.

Agar massiv uchun for/of siklidan foydalanmoqchi bo'lsangiz va har bir massiv elementining indeksini bilishingiz kerak bo'lsa, massivning entries() metodidan destrukturizatsiya orqali tayinlash bilan birga foydalaning:

Massivlarni iteratsiya qilishning yana bir yaxshi usuli — bu forEach()'dir. Bu for siklining yangi shakli emas, balki massiv iteratsiyasiga funksional yondashuvni taklif qiladigan massiv metodidir. Siz massivning forEach() metodiga funksiya uzatasiz va forEach() sizning funksiyangizni massivning har bir elementi uchun bir martadan chaqiradi:

Kutganingizdek, forEach() massivni tartib bilan iteratsiya qiladi va qiziq jihati shundaki, u massiv indeksini ham funksiyangizga ikkinchi argument sifatida uzatadi, bu esa ba'zi hollarda juda qo'l keladi. for/of siklidan farqli o'laroq, forEach() siyrak massivlardan "xabardor" va u mavjud bo'lmagan elementlar uchun funksiyangizni chaqirmaydi.

§7.8.1-bo'lim forEach() metodini yanada batafsil yoritadi. Bu bo'lim, shuningdek, massiv iteratsiyasining ixtisoslashgan turlarini bajaradigan map() va filter() kabi unga yaqin metodlarni ham qamrab oladi.

Albatta, massiv elementlari bo'ylab eski, qadrdon for sikli (§5.4.3) yordamida ham aylanib chiqish mumkin:

Ichma-ich joylashgan sikllarda yoki ishlash samaradorligini hal qiluvchi ahamiyatga ega bo'lgan boshqa kontekstlarda, ba'zan bu asosiy massiv iteratsiyasi siklining massiv uzunligi har bir iteratsiyada qayta-qayta emas, balki faqat bir marta qidiriladigan qilib yozilganini ko'rishingiz mumkin. Quyidagi for siklining har ikki shakli ham idiomatik hisoblanadi, garchi unchalik keng tarqalgan bo'lmasa-da. Zamonaviy JavaScript interpretatorlari bilan ularning ishlash samaradorligiga biror sezilarli ta'siri borligi ham aniq emas:

Bu misollar massiv zich va barcha elementlar to'g'ri ma'lumotlarni o'z ichiga oladi, deb faraz qiladi. Agar bunday bo'lmasa, massiv elementlarini ishlatishdan oldin ularni tekshirish lozim. Agar undefined va mavjud bo'lmagan elementlarni o'tkazib yubormoqchi bo'lsangiz, quyidagicha yozishingiz mumkin: