91 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			91 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: for-of loop | ||
|  | localeTitle: من أجل حلقة | ||
|  | ---
## من أجل حلقة
 | ||
|  | 
 | ||
|  | يمكن استخدام حلقة for-of للتكرار أكثر من الأشياء التي لا تكون صفائف ولكنها قابلة للتكرار مثل مجموعة DOM أو سلسلة أو مجموعة أو حجج أو خريطة. | ||
|  | 
 | ||
|  |  `const fruits = ['Orange','Apple','Grapes','Banana'];  | ||
|  |  for (const fruit of fruits)  | ||
|  |  {  | ||
|  |     console.log(fruit);  | ||
|  |  }  | ||
|  | `  | ||
|  | 
 | ||
|  | سيقوم المقتطف أعلاه بإرجاع العناصر الموجودة في المصفوفة أعلاه. | ||
|  | 
 | ||
|  | ## من أجل حلقة في معرفة مؤشر
 | ||
|  | 
 | ||
|  | ماذا لو أردنا أن نعرف مؤشر كل عنصر أيضا. في هذه الحالة يمكننا التكرار أكثر من fruit.entries () الذي يعطينا ArrayIterator. | ||
|  | 
 | ||
|  |  `for (const fruit of fruits.entries())  | ||
|  |  {  | ||
|  |     console.log(fruit);  | ||
|  |  }  | ||
|  | `  | ||
|  | 
 | ||
|  | في المقتطف أعلاه ، ستكون الفاكهة صفيفًا يشتمل على عنصرين. سيحتوي البند 0 على الفهرس وسيتضمن العنصر الأول اسم الفاكهة الفعلي. سيكون الناتج كما يلي: | ||
|  | 
 | ||
|  |  `[0, "Orange"]  | ||
|  |   | ||
|  |  [1, "Apple"]  | ||
|  |   | ||
|  |  [2, "Grapes"]  | ||
|  |   | ||
|  |  [3, "Banana"]  | ||
|  | `  | ||
|  | 
 | ||
|  | يمكننا مزيد من تدمير الفاكهة على النحو التالي: | ||
|  | 
 | ||
|  |  `for (const [index,fruit] of fruits.entries())  | ||
|  |  {  | ||
|  |     console.log(index,fruit);  | ||
|  |  }  | ||
|  | `  | ||
|  | 
 | ||
|  | ## for-of حلقة في تكرار على عدد غير معروف من الحجج
 | ||
|  | 
 | ||
|  | for-of loop مفيد جدا في التكرار على عدد غير معروف من الحجج لوظيفة. | ||
|  | 
 | ||
|  | لنفترض أننا نريد أن نضيف الأرقام التي تم تمريرها إلى إحدى الوظائف وأن عدد الوسيطات غير ثابت. | ||
|  | 
 | ||
|  | "الحجج" هي كلمة رئيسية خاصة في javascript والتي تعطينا نوع Array-ish (ليس مصفوفة) وتعطينا جميع الحجج. | ||
|  | 
 | ||
|  |  `function addNumbers()  | ||
|  |  {  | ||
|  |     let sum = 0;  | ||
|  |     for (const num of arguments)  | ||
|  |        sum+=num;  | ||
|  |     return sum;  | ||
|  |  }  | ||
|  |  addNumbers(1, 2, 3, 4, 5); // 15  | ||
|  | `  | ||
|  | 
 | ||
|  | هنا الحجج ليست مجموعة حقيقية لا يزال يمكننا تكرارها باستخدام حلقة for-of. | ||
|  | 
 | ||
|  | ## for-of loop للتكرار عبر السلسلة
 | ||
|  | 
 | ||
|  | يمكننا استخدام for-of loop للتكرار عبر سلسلة لإعطائنا شخصية من خلال حرف السلسلة. | ||
|  | 
 | ||
|  |  `const name = 'John Doe';  | ||
|  |  for (const char of name)  | ||
|  |     console.log(char);  | ||
|  | `  | ||
|  | 
 | ||
|  | مما ينتج عنه الإخراج التالي: الأحرف 'J' ، 'o' ، 'h' ، 'n' ، '' ، 'D' ، 'o' ، 'e' | ||
|  | 
 | ||
|  | ## for-of loop للتكرار عبر مجموعة DOM
 | ||
|  | 
 | ||
|  | مجموعات DOM ليست نوع الصفيف الحقيقي. وعادة ما تكون NodeList لمعظم المتصفحات. إذا قمنا بإنشاء عدد من الفقرات وأردت التكرار بدلاً منها لتعيين بعض الأحداث في كل من الفقرات ، فيمكننا استخدام حلقة for for of. | ||
|  | 
 | ||
|  |  `const paragraphs = document.querySelectorAll('p');  | ||
|  | `  | ||
|  | 
 | ||
|  | الفقرات هنا هي NodeList التي يمكن تكرارها باستخدام حلقة for-of. | ||
|  | 
 | ||
|  |  `for (const para of paragraphs)  | ||
|  |  {  | ||
|  |     console.log(para);  | ||
|  |     // We can add event listeners to each para here  | ||
|  |  }  | ||
|  | ` |