JavaScript

Object Iterables

في هذا الدرس سوف نتعرف علي iterables وهي الخاصة بأنشاء تكرارات علي ال Objects في لغة javaScript 

التاريخ

10 نوفمبر 2021

الدروس

146

المستوى

العامة

اللغة

انجليزي

المشاهدات

762

المواضيع

24
الشروحات chevron_left Object Iterables chevron_left JavaScript

Object Iterables

</> Iterating Over a String

نستطيع تكرار ال object باستخدام الحلقة التكرارية " for..of " وهي تسمي iterable ويمكننا ايضا استخدامها في عمل حلقة تكرارية علي احرف نص معين كما في المثال التالي

for (const x of "Closetag") {
  /* code block to be executed*/
}

</> Iterating Over an Array

نستطيع استخدام الحلقة التكرارية "for..of" لنقوم بعمل تكرار عملية المرور علي عناصر مصفوفة array معينة كما في المثال التالي

Example
for (const x of [1,2,3,4,5] {
  /* code block to be executed*/
}

</> JavaScript Iterators

ال iterator protocol يستخدم في تحديد الطريقة التي سوف يتم بها عرض النص الموجود بداخل object معين

ال object يصبح iterator عند تنفيذ دالة ( )next 

- تقوم دالة next بأرجاع object حتي علي اثنان من الخصائص properties وهما :

  • down : تكون قيمتها تساوي true عندما يتم انتهاء تنفيذ عملية التكرار علي عنصر معين و false اذا قام ال iterator باضافة قيمة جديدة
  • value : هي القيمة التي تم ارجاعها بواسطة ال iterator ويمكن تجاهلها اذا كانت قيمت "done" تساوي "true "

</> Home Made Iterable

هذه العوائد المتكررة التي لا تنتهي أبدًا: 10،20،30،40 ، .... في كل مرة يتم استدعاء دالة ( )next

/* Home Made Iterable */
function myNumbers() {
  let n = 0;
  return {
    next: function() {
      n += 10;
      return {value:n, done:false};
    }
  };
}

/* Create Iterable */
const n = myNumbers();
n.next(); /* Returns 10 */
n.next(); /* Returns 20 */
n.next(); /* Returns 30 */

iterable : هو عبارة عن object يحتوي علي الخاصية "Symbol.iterator "

Symbol.iterator : هي عبارة عن خاصية تقوم بتنفيذ دالة ( )next 

Example
/* Create an Object */
myNumbers = {};

/* Make it Iterable */
myNumbers[Symbol.iterator] = function() {
  let n = 0;
  done = false;
  return {
    next() {
      n += 10;
      if (n = 100) {done = true}
      return {value:n, done:done};
    }
  };
}

الدالة "Symbol.iterator " يتم استدعائها بشكل تلقائي بواسطة "for..of" ولكننا يمكننا انشائها بشكل يدوي كالتالي

let iterator = myNumbers[Symbol.iterator]();

while (true) {
  const result = iterator.next();
  if (result.done) break;
  // Any Code Here
}
معلومات تهمك
  • لا تنسى تقييم الدروس لكي نُحدّث المُحتوى باستمرار حتى ينال إعجابك.
  • لا تنسى مشاركة الموقع مع أصدقاءك حتى تعمّ الفائدة وتكون سبب في نفعهم.
مشاركة
0
0
0
0
عدد المشاركات
هل هذه المعلومات نالت إعجابك ؟
0
0
عدد التقييمات