funktsiyasi xarita < T , U > ( massiv : T [], f : ( element : T ) => U ) : U [] {
ruxsat bering natija = []
uchun ( ruxsat i = 0 ; i < massiv . uzunligi ; i ++ ) {
natija [ i ] = f ( massiv [ i ])
}
qaytish natija
}
Bizga aynan ikkita umumiy tur kerak: massiv a'zolarining kiradigan turi uchun T va chiqadigan massiv a'zolarining turi uchun U. Biz T lar massivida va T ni oladigan va uni U ga moslashtiruvchi xaritalash funktsiyasidan o'tamiz . Nihoyat, biz U lar qatorini qaytaramiz .
Standart kutubxonada filtr va xarita
Filtr va xarita uchun bizning ta'riflarimiz TypeScript bilan ta'minlanganlarga juda o'xshash:
interfeys Massiv < T > {
filtr (
callbackfn : ( qiymat : T , indeks : raqam , massiv : T []) => har qanday ,
thisArg? : har qanday
) : T [] xaritasi < U > (
callbackfn : ( qiymat : T , indeks : raqam , massiv : T []) => U ,
thisArg? : har qanday
) : U []
}
Biz hali interfeyslarni ko'rib chiqmadik, ammo bu ta'rif filtr va xarita T tipidagi massivdagi funksiyalar ekanligini aytadi . Ularning ikkalasi ham callbackfn funktsiyasini va funktsiya ichidagi buning turini oladi.
filtr butun Array interfeysiga kiritilgan umumiy T dan foydalanadi . map T dan ham foydalanadi va faqat xarita funksiyasiga kiritilgan ikkinchi umumiy U ni qo'shadi . Bu shuni anglatadiki , siz massivni yaratganingizda TypeScript aniq turni T ga bog'laydi va ushbu massivdagi filtrlash va xaritalash uchun har bir qo'ng'iroq o'sha aniq turni baham ko'radi. map ga har safar qo'ng'iroq qilganingizda , bu qo'ng'iroq allaqachon bog'langan T ga kirish huquqidan tashqari U uchun o'zining bog'lanishiga ega bo'ladi .
JavaScript standart kutubxonasidagi ko'p funksiyalar umumiydir, ayniqsa Array prototipidagi funksiyalar. Massivlar har qanday turdagi qiymatlarni o'z ichiga olishi mumkin, shuning uchun biz bu turni T deb ataymiz va " .push T tipidagi argumentni oladi " yoki " .T s massivdan U s massivigacha xaritalarni xaritalash " kabi narsalarni aytishimiz mumkin .
|
Do'stlaringiz bilan baham: |