## مقدمة إلى العناصر القابلة للتكرار (Iterables) في JavaScript
تُعتبر العناصر القابلة للتكرار (Iterables) من المفاهيم الأساسية في JavaScript التي توفر طريقة موحدة للتعامل مع مجموعات البيانات بطرق مريحة وفعالة. تمكنك هذه الآلية من استعراض العناصر في [شركة برمجة مصرية] هياكل البيانات المختلفة مثل المصفوفات، والمجموعات (Sets)، والخرائط (Maps)، وحتى الكائنات المعرفة من قبل المستخدم.
### ما هي الـ Iterables؟
الـ Iterable هو كائن يمكن تكراره باستخدام حلقة `for…of`، أو غيرها من الطرق مثل دوال التفكيك (Destructuring). يتطلب اعتبار كائن ما كـ Iterable أن يحتوي على خاصية `Symbol.iterator`، وهي دالة تُعيد كائنًا يُنفذ بروتوكول الـ Iterator.
### بروتوكول الـ Iterator
قبل الغوص في الأمثلة، دعونا نفهم بروتوكول الـ Iterator. الكائن الذي يتبع هذا البروتوكول يجب أن يمتلك دالة `next()` تُعيد كائنًا يحتوي على خاصيتين:
– `value`: القيمة الحالية.
– `done`: مؤشر يدل على ما إذا كانت عملية التكرار قد انتهت أم لا.
### أمثلة على Iterables في JavaScript
#### 1. المصفوفات (Arrays)
المصفوفات هي مثال شائع للـ Iterables في JavaScript. يُمكنك استخدام حلقة `for…of` للتكرار عبر عناصر المصفوفة.
const numbers = [1, 2, 3, 4, 5];
for (const number of numbers) {
console.log(number);
}
#### 2. المجموعات (Sets)
تُشبه المجموعات المصفوفات ولكنها لا تسمح بتكرار العناصر. المجموعات أيضًا قابلة [شركة برمجة مصرية] للتكرار.
const uniqueNumbers = new Set([1, 2, 3, 4, 5]);
for (const number of uniqueNumbers) {
console.log(number);
}
#### 3. الخرائط (Maps)
الخرائط هي هياكل بيانات تخزن أزواج المفتاح والقيمة، وهي قابلة للتكرار أيضًا.
const userRoles = new Map();
userRoles.set('Alice', 'Admin');
userRoles.set('Bob', 'User');
for (const [user, role] of userRoles) {
console.log(`${user}: ${role}`);
}
### إنشاء Iterable خاص بك
يمكنك أيضًا إنشاء Iterable خاص بك عن طريق تعريف خاصية `Symbol.iterator`.
const myIterable = {
*[Symbol.iterator]() {
yield 1;
yield 2;
yield 3;
}
};
for (const value of myIterable) {
console.log(value);
}
في هذا المثال، استخدمنا الدالة المولدة `*` لإنشاء Iterable يُعيد القيم 1، 2، و3.
### الخاتمة
تُعتبر الـ Iterables من الأدوات القوية في JavaScript التي تُمكنك من التعامل مع مختلف هياكل البيانات بطريقة موحدة وسهلة. سواء كنت تعمل مع المصفوفات، المجموعات، أو الخرائط، أو حتى إنشاء هياكل بيانات مخصصة، فإن فهم كيفية عمل الـ Iterables واستخدامها سيزيد من كفاءتك كمطور JavaScript.
