roadmap.az

Menyu

JavaScript & DOMDərs 13 / 25

map, filter və find metodları

map: hər elementi dəyiş

Tutaq ki, [1, 2, 3] massivindəki hər ədədi ikiqat artırmaq istəyirsən. map hər element üçün funksiyanı işlədir və nəticələrdən yeni massiv yaradır.

const numbers = [1, 2, 3];
const doubled = numbers.map(
  number => number * 2
);

console.log(doubled); // [2, 4, 6]
console.log(numbers); // [1, 2, 3]
Nümunə

number => number * 2 hər dəfə bir ədəd alır və onun ikiqatını qaytarır. Nəticədə yenə üç element var. İlkin massiv dəyişmir.

filter: uyğun elementləri saxla

İndi yalnız 2-dən böyük və ya ona bərabər ədədləri istəyək. filter şərtə uyğun gələnləri yeni massivə yığır.

const numbers = [1, 2, 3];
const selected = numbers.filter(
  number => number >= 2
);

console.log(selected); // [2, 3]
Nümunə

Burada 1 şərtə uyğun gəlmir, ona görə nəticədə yoxdur. Heç bir element uyğun gəlməsə, boş massiv — [] alınır.

find: ilk uyğun elementi tap

Siyahı yox, yalnız bir element lazımdırsa, find istifadə et. O, ilk uyğun elementi qaytarır.

const numbers = [1, 2, 3];
const firstMatch = numbers.find(
  number => number >= 2
);
const missing = numbers.find(
  number => number > 10
);

console.log(firstMatch); // 2
console.log(missing); // undefined
Nümunə

Qısa seçim qaydası: çevirmək üçün map, seçmək üçün filter, birini tapmaq üçün find.

Yadda saxla

Bu metodlara verdiyin funksiyaya callback deyilir. Qısa oxlu yazıda nəticə avtomatik qaytarılır. Fiqurlu mötərizə ilə gövdə yazanda return əlavə et:

const doubled = [1, 2, 3].map(number => {
  return number * 2;
});
Nümunə

Bu metodların özü ilkin massivi sıralamır və ya ondan element silmir. Amma callback daxilində obyektin xassəsini birbaşa dəyişsən, həmin obyekt yenə dəyişər. Yeni obyekt yaratmaq üçün items.map(item => ({ ...item, active: true })) yazmaq olar.

Bir neçə əməliyyatı ardıcıl da edə bilərsən: əvvəl filter ilə seç, sonra map ilə çevir. find nəticəsinin mövcudluğunu yoxlamadan onun xassəsinə müraciət etmə.

Əlavə qeydlər və mənbələr

map hər elementdən yeni dəyər yaradır, filter şərtə uyğun elementləri seçir, find isə ilk uyğun elementi qaytarır. find nəticəsi tapılmadıqda undefined olur; callback-in qaytardığı dəyər nəticəni müəyyən edir.

Niyə vacibdir?

JavaScript istifadəçi hərəkətinə cavab verən və məlumatı emal edən səhifələr yaratmağa imkan verir.

Əvvəlki biliklər

Bu mövzuda

  • map ilə çevirmə
  • filter ilə seçim
  • find və tapılmayan nəticə

Mövzuya baxış

Mənbələr

Məşqin idarəetməsi
Addım 1 / 4

Hər ədədi dəyiş

Vurğunu dəyiş. Nəticəni müqayisə et.

Hədəf: Vurğunu 3 et.

Canlı nəticə

Giriş123
Nəticə246
Mənbə kodu
[1,2,3].map(n => n * 2)
Addım-addım izlə
  1. 1 × 2 → 2
  2. 2 × 2 → 4
  3. 3 × 2 → 6

Özün sına

Adlar massivindən A ilə başlayanları seç, hamısını böyük hərfə çevir və ilk üçsimvollu adı tap. Uyğun element olmayan halı da yoxla.

Nəticəni necə yoxlayım?

map, filter və find uyğun nəticə tipləri qaytarır; tapılmayan element və boş massiv yoxlanılıb.

Gözlənilən nəticə

  • Seçilmiş adlar Aysel, Ali, Arif; böyük hərflə AYSEL, ALİ, ARİF olur.
  • İlk üçsimvollu nəticə ALİ-dir; uyğun ad olmayanda undefined qaytarılır.
["Aysel","Ali","Arif"]
["AYSEL","ALİ","ARİF"]
ALİ
undefined
Nümunə həllə bax

Əvvəl özün sına, sonra müqayisə et. Bu, mümkün həllərdən biridir.

filter A ilə başlayan adları seçir, map onları böyüdür, find isə üçsimvollu ilk adı qaytarır. Azərbaycan dilinə uyğun böyük hərf çevirməsi istifadə edilir.

main.js

const names = ['Aysel', 'Ali', 'Nigar', 'Arif'];
const selected = names.filter(name => name.startsWith('A'));
const upper = selected.map(name => name.toLocaleUpperCase('az'));
const firstThree = upper.find(name => Array.from(name).length === 3);
console.log(JSON.stringify(selected));
console.log(JSON.stringify(upper));
console.log(firstThree);
console.log(['Nigar'].filter(name => name.startsWith('A')).find(name => name.length === 3));

Praktikanı bitirdin?Özün qiymətləndirirsən. İrəliləyiş bu brauzerdə saxlanılır.