أصبحت أدوات المساعدة في أداة التكرار متاحة الآن في الإصدار الأساسي

تاريخ النشر: 1 أيار (مايو) 2025

إذا كنت تكتب JavaScript، ستحتاج إلى تكرار العمليات كثيرًا. يمكنك كتابة حلقات للعمل مع الصفائف، أو استخدام طرق البرمجة الوظيفية مثل map وfilter وطرق أخرى مشابهة لمعالجة جميع أنواع البيانات.

ومع ذلك، فإنّ إحدى المشاكل في استخدام هذه الطرق هي أنّها لا تتوفّر إلا في الصفائف. إذا أردت استخدامها في عنصر قابل للتكرار، عليك تحويله إلى صفيف، ثم استدعاء الطريقة التي تحتاجها. وقد يؤدي ذلك إلى إهدار الموارد، أو قد لا يكون ذلك ممكنًا في الحالات التي يمثّل فيها العنصر القابل للتكرار مجموعة بيانات لا نهائية باستخدام دوالّ إنشاء القوائم. ومع ذلك، أصبح بإمكانك الآن استخدام هذه الميزة في جميع المتصفّحات، وذلك بعد أن أصبحت أدوات المساعدة في أداة التكرار متاحة في الإصدار الأساسي.

كيف تعمل أدوات المساعدة في التكرار؟

يتم عرض أدوات المساعدة الخاصة بالمتحقّق من خلال تحديد طرق جديدة في prototype لعنصر Iterator. تتوافق هذه الطرق مع العديد من طرق البرمجة الوظيفية التي اعتدت استخدامها، مثل map وfilter وreduce وغيرها من الطرق المشابهة.

على سبيل المثال، يمكنك استخدام أداة مساعدة للمتحقّق في طريقة filter لفلترة عناصر القائمة حسب محتوى سمة innerText لمجموعة من عقد DOM، والتي يمكنك استخدامها لاحقًا في حلقة for:

const posts = document.querySelectorAll("ul#specific-list > li")
  .values()
  .filter(item => item.textContent.includes("kiwi"));

// For-of loops can only be used on iterables, which `posts` is!
for (const post of posts) {
  console.log(post.textContent);
}

في المقتطف السابق من الرمز البرمجي، يتم استخدام طريقة المساعدة في أداة التنقّل filter للتنقّل في جميع عناصر <li> في عنصر <ul> معيّن. معايير الفلترة هي أنّ محتوى النص لكل عنصر يجب أن يحتوي على سلسلة فرعية من "kiwi".

يمكن أيضًا استخدام أدوات المساعدة الخاصة بالمتحقّقين مع دوالّ المولد. في هذا المثال، دالة إنشاء تحسب العوامل الحسابية، ولكنها تستخدِم الوسيط الموسّع للفلترة من القيم إلى القيم التي تقسم على 8، وتسجِّل أوّل خمس قيم تمت فلترتها في وحدة التحكّم:

function* factorials (n) {
  let result = 1;

  for (let i = 1; i <= n; i++) {
    result *= i;

    yield result;
  }
}

const filteredFactorials = factorials(128).filter(x => x % 8 === 0);

console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);
console.log(filteredFactorials.next().value);

على وجه الخصوص، يمثّل المقتطف السابق من الرمز مثالاً على إجراء لا يمكن تنفيذه باستخدام أدوات المساعدة في أداة التكرار، لأنّ عدد الدوالّ الحسابية لا نهائي، ولا يمكن تحويله إلى صفيف بخلاف ذلك.

استنادًا إلى حالتك، تتوفّر وظائف المساعدة الخاصة بالمتسلسلات الكثير من الإمكانات، وهي متاحة لكلّ من الطرق التالية التي يمكن تكرارها:

إنّ إمكانيات استخدام مساعدة الموسّع واسعة النطاق، ويمكن أن توفّر تحسينًا كبيرًا في بيئة عمل المطوّرين. والآن بعد أن أصبحت هذه الإصدارات متوفّرة كإصدارات أساسية جديدة، من المفترض أن تزداد ثقتك بمرور الوقت بأنّه يمكنك استخدامها بدون خوف من حدوث مشاكل في التوافق. لمزيد من المعلومات، يُرجى الاطّلاع على المراجع التالية: