जावास्क्रिप्ट इटरेबल ऑब्जैक्ट

भ्रमण किए जा सकने वाले ऑब्जैक्ट (जैसे एलिमेंट्स) हैं

सहज और कुशल कोड से इस्तेमाल किए जा सकने वाले ऑब्जैक्ट

सहज रूप से इस्तेमाल किए जा सकने वाले ऑब्जैक्ट for..of चक्र इटरेशन करता है。

for..of चक्र

for..of भ्रमण करने के लिए इस्तेमाल किए जाने वाले वाक्यों के लिए है।

व्याकरण

for (वेरियेबल of iterable) {
  // को चलाने के लिए कोड ब्लॉक
}

इटरेशन

इटरेशन को समझना आसान है。

यह केवल एक श्रृंखला एलिमेंट्स को भ्रमण करने का अर्थ है।

नीचे कुछ साधारण उदाहरण हैं:

  • एलिमेंट्स को भ्रमण करें
  • एलिमेंट्स को भ्रमण करें

एलिमेंट्स को भ्रमण करें

इस्तेमाल कर सकते हैं for..of एलिमेंट्स को चक्रीय भ्रमण करें:

इन्स्टैंस

const name = "W3Schools";
for (const x of name) {
  // को चलाने के लिए कोड ब्लॉक
}

स्वयं प्रयास करें

एलिमेंट्स को भ्रमण करें

इस्तेमाल कर सकते हैं for..of एलिमेंट्स को चक्रीय भ्रमण करें:

उदाहरण 1

const letters = ["a","b","c"];
for (const x of letters) {
  // को चलाने के लिए कोड ब्लॉक
}

स्वयं प्रयास करें

उदाहरण 2

const numbers = [2,4,6,8];
for (const x of numbers) {
  // को चलाने के लिए कोड ब्लॉक
}

स्वयं प्रयास करें

सेट को भ्रमण करें

इस्तेमाल कर सकते हैं for..of सेट के एलिमेंट्स को चक्रीय भ्रमण करें:

इन्स्टैंस

const letters = new Set(["a","b","c"]);
for (const x of letters) {
  // को चलाने के लिए कोड ब्लॉक
}

स्वयं प्रयास करें

टिप्पणी:हम बाद में Set और Map का विस्तार करेंगे

Map को घूमें

इस्तेमाल कर सकते हैं for..of Map के एलिमेंट को चक्रवाती रूप से घूमें

इन्स्टैंस

const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
});
for (const x of fruits) {
  // को चलाने के लिए कोड ब्लॉक
}

स्वयं प्रयास करें

कैसे बनाया जाए

जेसक्रिप्ट इटरेटरएक श्रृंखला मूल्य

इटरेटर प्रोटोकॉल ऑब्जैक्ट से next() विधि को जब ऑब्जैक्ट नेइटरेटर

next() विधि को दो गुणों वाला एक ऑब्जैक्ट वापस देना चाहिए

  • value (अगला मूल्य)
  • done (true या false)
value

इटरेटर द्वारा वापस दिया गया मूल्य

यदि done true है, तो इसे छोड़ सकते हैं

done

यदि इटरेटर पूरा हो गया है, तो यह true है

यदि इटरेटर नई मूल्य बनाता है, तो यह false है

ध्यान:

तकनीकी रूप से, अनियत ऑब्जैक्ट को Symbol.iterator विधि को अंजाम देना चाहिए

स्ट्रिंग, एरे, TypedArray, Map और Set अनियत ऑब्जैक्ट हैं

अनुकूल अनियत ऑब्जैक्ट

इस उदाहरण में एक अनुकूल अनियत ऑब्जैक्ट को दिखाया गया है next() हर बार 10, 20, 30, 40, ... वापस देते है:

इन्स्टैंस

// अनुकूल अनियत ऑब्जैक्ट
function myNumbers() {
  let n = 0;
  return {
    next: function() {
      n += 10;
      return { value: n, done: false };
    }
  };
}
// अनियत ऑब्जैक्ट बनाएं
const n = myNumbers();
n.next(); // 10 वापस देता है
n.next(); // 20 वापस देता है
n.next(); // 30 वापस देता है

स्वयं प्रयास करें

समस्या है:

अनुकूल अनियत ऑब्जैक्ट जेसक्रिप्ट के for..of वाक्यांश

जो for..of वाक्यांश को समर्थित करता है

जेसक्रिप्ट में अनियत ऑब्जैक्ट एक ऑब्जैक्ट है Symbol.iterator जो

Symbol.iterator एक ऐसा ऑब्जैक्ट वापस देता है next() मथड्डे की फ़ंक्शन

इस कोड का उपयोग करके एक अनियत ऑब्जैक्ट को इटरेट किया जा सकता है:

for (const x of iterable});

इन्स्टैंस

// एक ऑब्जैक्ट बनाएं
myNumbers = {};
// इसे अविश्वसनीय बनाएं
myNumbers[Symbol.iterator] = function() {
  let n = 0;
  done = false;
  return {
    next() {
      n += 10;
      if (n == 100) { done = true; }
      return { value: n, done: done };
    }
  };
};
// अब for..of का उपयोग कर सकते हैं
for (const num of myNumbers) {
  // किसी भी कोड
}

स्वयं प्रयास करें

Symbol.iterator मेथड होगा for..of स्वचालित बुलाना。

लेकिन हम इसे हाथ से भी बुलाने में सक्षम हैं:

इन्स्टैंस

let iterator = myNumbers[Symbol.iterator]();
while (true) {
  const result = iterator.next();
  if (result.done) break;
  // किसी भी कोड
}

स्वयं प्रयास करें