CodeGym /Kurslar /Frontend SELF AZ /Iterables və Iterators

Iterables və Iterators

Frontend SELF AZ
Səviyyə , Dərs
Mövcuddur

1.1 Əsas anlayışlar

JavaScript-də iterators və iterables obyektlər (iterables) obyektlərin sırayla keçilməsi üçün istifadə olunan fundamental konseptlərdir. Bu konseptlər müasir JavaScript-də geniş şəkildə tətbiq olunur, xüsusilə for...of dövrlərində, operator yayılması (spread operator), destruktivizasiya və digər çoxlu konstruksiyalarda. Bu mühazirədə iterables və iterators nədir, onların necə işlədiyini və onları necə yaratmaq və istifadə etməyi öyrənəcəyik.

Iterables (Iterables obyektlər)

Iterables obyektlər iterasiya protokolunu həyata keçirən obyektlərdir. Onların xüsusi [Symbol.iterator] açarı ilə metodları olmalıdır ki, bu da iterator obyekt qaytarsın.

Iterators (Iterators)

Iterator — bu obyekt xüsusi next() metoduna sahibdir və bu metod iki xüsusiyyətə malik obyekti qaytarır:

  • value — ardıcıllığın növbəti elementinin dəyəri
  • done — ardıcıllığın tamamlandığını (true) və ya tamamlanmadığını (false) göstərən boolean dəyər

Nümunələrə nəzər salaq.

Daxili iterables obyektlər

JavaScript, massivlər, sətirlər, SetMap obyektləri kimi bir neçə daxili iterables obyektlərə malikdir.

Nümunə 1: Massivin iterasiya edilməsi

JavaScript
    
      const array = [1, 2, 3, 4, 5];

      for (const item of array) {
        console.log(item);
      }

      // Çap edəcək: 1 2 3 4 5
    
  

Nümunə 2: Sətirin iterasiya edilməsi

JavaScript
    
      const string = 'hello';

      for (const char of string) {
        console.log(char);
      }

      // Çap edəcək: h e l l o
    
  

1.2 Öz iterátorlarını yaratmaq

Siz öz iterátorunuzu yarada bilərsiniz, iterasiya protokolunu həyata keçirməklə — next() metodunu yaratmaqla.

Məsələn 1: Iteratora yaradılması

JavaScript
    
      function createIterator(array) {
        let index = 0;

        return {
          next: function() {
            if (index < array.length) {
              return { value: array[index++], done: false };
            } else {
              return { done: true };
            }
          }
        };
      }

      const myIterator = createIterator([1, 2, 3]);

      console.log(myIterator.next()); // { value: 1, done: false }
      console.log(myIterator.next()); // { value: 2, done: false }
      console.log(myIterator.next()); // { value: 3, done: false }
      console.log(myIterator.next()); // { done: true }
    
  

Iterasiya olunan obyektlərin yaradılması

Bir obyektin iterasiya oluna bilməsi üçün o, [Symbol.iterator] metodunu həyata keçirməlidir. Bəli, bu ad bir az qarışıqdır. Belə yaradıla bilər.

Məsələn 2: Iterasiya olunan obyektin yaradılması

JavaScript
    
      const myIterable = {
        *[Symbol.iterator]() {
          yield 1;
          yield 2;
          yield 3;
        }
      };

      for (const value of myIterable) {
        console.log(value);
      }

      // Çap edəcək: 1 2 3
    
  

1.3 Daxili metodlar

Iterables obyektlərlə işləmək üçün daxili metodları və operatorları nəzərdən keçirək.

Nümunə 1: Spread operatoru

Spread operatoru (...) iterables obyektləri kopyalamaq və ya birləşdirmək üçün istifadə oluna bilər.

JavaScript
    
      const array = [1, 2, 3];
      const newArray = [...array, 4, 5, 6];

      console.log(newArray); // Çap edəcək: [1, 2, 3, 4, 5, 6]
    
  

Nümunə 2: Destrukturizasiya

Destrukturizasiya iterables obyektlərdən dəyərləri çıxarmağa imkan verir.

JavaScript
    
      const [first, second, third] = [1, 2, 3];

      console.log(first);  // Çap edəcək: 1
      console.log(second); // Çap edəcək: 2
      console.log(third);  // Çap edəcək: 3
    
  

Nümunə 3: Array.from və Array.of metodları

Array.from() metodu iterables obyektlərdən array yaratmağa imkan verir.

JavaScript
    
      const set = new Set([1, 2, 3, 4, 5]);
      const array = Array.from(set);

      console.log(array); // Çap edəcək: [1, 2, 3, 4, 5]
    
  
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION