Objek yang Dapat Diiterasi JavaScript

Objek yang dapat dilewati adalah objek yang dapat dilewati (seperti array).

Objek yang dapat dilewati dapat diakses dengan kode yang sederhana dan efisien.

Objek yang dapat dilewati dapat digunakan for..of Perulangan melakukan iterasi.

Perulangan for..of

for..of pernyataan digunakan untuk melintasi elemen objek yang dapat dilewati.

Sintaks

for (variable of iterable) {
  // blok kode yang akan dijalankan
}

Iterasi

Iterasi mudah untuk memahami.

Artinya hanya melintasi sekumpulan elemen.

Berikut adalah beberapa contoh sederhana:

  • Melintasi string
  • Melintasi array

Melintasi string

dapat digunakan untuk for..of Melintasi elemen string:

Contoh

const name = "W3Schools";
for (const x of name) {
  // blok kode yang akan dijalankan
}

Coba Sendiri

Melintasi array

dapat digunakan untuk for..of Melintasi elemen array:

Contoh 1

const letters = ["a","b","c"];
for (const x of letters) {
  // blok kode yang akan dijalankan
}

Coba Sendiri

Contoh 2

const numbers = [2,4,6,8];
for (const x of numbers) {
  // blok kode yang akan dijalankan
}

Coba Sendiri

Melintasi Set

dapat digunakan untuk for..of Melintasi elemen Set:

Contoh

const letters = new Set(["a","b","c"]);
for (const x of letters) {
  // blok kode yang akan dijalankan
}

Coba Sendiri

Keterangan:kami akan menjelaskan lebih lanjut tentang Set dan Map di bab berikutnya.

melintasi Map

dapat digunakan untuk for..of melintasi elemen Map dengan putar:

Contoh

const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
});
for (const x of fruits) {
  // blok kode yang akan dijalankan
}

Coba Sendiri

iterator JavaScript

protokol iterator mendefinisikan bagaimana menghasilkansatu rangkaian nilai.

ketika objek melaksanakan next() ketika objek melaksanakan metodeiterator.

next() metode harus mengembalikan objek yang mengandung 2 atribut:

  • value (nilai berikutnya)
  • done (true atau false)
value

nilai yang dikembalikan iterator.

jika done adalah true, maka dapat disingkirkan.

done

jika iterator selesai, maka true.

jika iterator menciptakan nilai baru, maka false.

Perhatian:

Tekniknya, objek yang dapat diiterasi harus melaksanakan metode Symbol.iterator.

string, array, TypedArray, Map dan Set adalah objek yang dapat diiterasi, karena prototipe objek mereka memiliki metode Symbol.iterator.

objek yang dapat diiterasi yang dibuat sendiri

Contoh menunjukkan objek yang dapat diiterasi yang dibuat sendiri, yang akan selalu berakhir, setiap pemanggilan next() semua akan kembalikan 10, 20, 30, 40, ...:

Contoh

// Membuat objek yang dapat diiterasi sendiri
function myNumbers() {
  let n = 0;
  return {
    next: function() {
      n += 10;
      return { value: n, done: false };
    }
  };
}
// Membuat objek yang dapat diiterasi
const n = myNumbers();
n.next(); // kembalikan 10
n.next(); // kembalikan 20
n.next(); // kembalikan 30

Coba Sendiri

Masalahnya adalah:

Objek yang dapat diiterasi yang dibuat sendiri tidak mendukung JavaScript for..of .

yang mendukung kalimat for..of

Objek yang dapat diiterasi JavaScript memiliki Symbol.iterator objek.

Symbol.iterator adalah yang mengembalikan next() fungsi.

dapat digunakan kode berikut untuk mengiterasi objek yang dapat diiterasi:

for (const x of iterable}) { }

Contoh

// Membuat sebuah objek
myNumbers = {};
// Membuatnya dapat diiterasi
myNumbers[Symbol.iterator] = function() {
  let n = 0;
  done = false;
  return {
    next() {
      n += 10;
      if (n == 100) { done = true; }
      return { value: n, done: done };
    }
  };
};
// Sekarang dapat menggunakan for..of
for (const num of myNumbers) {
  // Kode Apa Saja
}

Coba Sendiri

Metode Symbol.iterator akan for..of Panggil Otomatis

Tapi kami juga dapat memanggilnya secara manual:

Contoh

let iterator = myNumbers[Symbol.iterator]();
while (true) {
  const result = iterator.next();
  if (result.done) break;
  // Kode Apa Saja
}

Coba Sendiri