موضوعهای قابل جستجوی JavaScript
شیء قابل جستجو میتواند به عنوان شیء قابل جستجو استفاده شود (مانند آرایهها).
شیء قابل جستجو میتواند با کد ساده و کارآمد دسترسی پیدا کند.
شیء قابل جستجو میتواند با استفاده از فاراً آف
چرخهای که به عنوان ایتریشن عمل میکند.
برای..of چرخه
فاراً آف
استفاده میشود تا عناصر یک شیء قابل جستجو را بگردد.
نحوه استفاده
برای (مقادیر متغیر آف تکرار کار) { // بلاک کدی که باید اجرا شود }
ایتریشن
ایتریشن به راحتی قابل فهم است.
این فقط به معنای گذار از یک مجموعه از عناصر است.
در اینجا چند مثال ساده آورده شده است:
- بعد از گذار از رشته
- بعد از گذار از آرایه
بعد از گذار از رشته
میتوان فاراً آف
بعد از گذار از عناصر رشته:
مثال
const name = "W3Schools"; برای (const x of name) { // بلاک کدی که باید اجرا شود }
بعد از گذار از آرایه
میتوان فاراً آف
بعد از گذار از عناصر آرایه:
مثال 1
const letters = ["a","b","c"]; برای (برای هر x از حروف) { // بلاک کدی که باید اجرا شود }
مثال 2
const numbers = [2,4,6,8]; برای (const x of numbers) { // بلاک کدی که باید اجرا شود }
بعد از گذار از Set
میتوان فاراً آف
بعد از گذار از عناصر Set:
مثال
const حروف = new Set(["a","b","c"]); برای (برای هر x از حروف) { // بلاک کدی که باید اجرا شود }
توجه داشته باشید که:ما در فصلهای بعدی Set و Map را توضیح خواهیم داد.
برای تکرار کردن Map
میتوان فاراً آف
برای تکرار کردن عناصر Map:
مثال
const میوهها = new Map([ ["apples", 500] ["bananas", 300], ["oranges", 200] ]); برای (برای هر x از میوهها) { // بلاک کدی که باید اجرا شود }
آنالیزگر JavaScript
پrotocol آنالیزگر تعریف میکند که چگونه میتوان مقدارهای یک شیء را تولید کردیک سری از مقادیر.
وقتی که یک شیء next()
وقتی که یک شیء روشآنالیزگر.
next()
روش باید یک شیء شامل دو ویژگی را بازگرداند:
- value (مقدار بعدی)
- done (true یا false)
value |
مقدار بازگردانده شده توسط آنالیزگر. اگر done به معنای true باشد، میتوان آن را حذف کرد. |
done |
اگر آنالیزگر تمام شده باشد، به معنای true است. اگر آنالیزگر مقدار جدیدی تولید کند، به معنای false است. |
توجه داشته باشید که:
از لحاظ فنی، شیء قابل تکرار باید روش Symbol.iterator را اجرا کند.
رشته، آرایه، TypedArray، Map و Set همهی آنها شیء قابل تکرار هستند، زیرا prototype آنها روش Symbol.iterator را دارند.
شیء قابل تکرار تعریف شده توسط کاربر
مثال زیر یک شیء قابل تکرار تعریف شده توسط کاربر را نشان میدهد که هرگز تمام نمیشود، هر بار که next()
همهی آنها 10، 20، 30، 40، ... را بازمیگرداند:
مثال
// ایجاد شیء قابل تکرار تعریف شده توسط کاربر function myNumbers() { لیٹ این = 0; بازگشت { next: function() { این += 10; برگرداند { value: n, done: false }; } }; } // ایجاد شیء قابل تکرار const n = myNumbers(); n.next(); // بازمیگرداند 10 n.next(); // بازمیگرداند 20 n.next(); // بازمیگرداند 30
مسئله این است که:
شیء قابل تکرار تعریف شده توسط کاربر پشتیبانی JavaScript فاراً آف
استفاده میشود.
شیء قابل تکرار که از for..of پشتیبانی میکند
شیء قابل تکرار JavaScript دارای Symbol.iterator شیء را برمیگرداند.
Symbol.iterator یک چیزی است که یک next()
یک تابع.
میتوان از کد زیر برای تکرار کردن یک شیء قابل تکرار استفاده کرد:
برای (برای هر) ایکس آف تکرار کار});
مثال
// ایک اوبجیکٹ بنائیں می مبر = {}; // اس کو قابل تکرار بنائیں می مبر [سمبول آئیٹرار] = فانشن() { لیٹ این = 0; کامیاب = ناقص; بازگشت { نکسٹ() { این += 10; اگر (این == 100) { کامیاب = حقیقی; } بازگشت { ارزش: این، کامیاب: کامیاب }; } }; }; // اب میں فاراً آف استعمال کیا جاسکتا ہے، برای (کنسٹ نمبر آف می مبر) { // کسی بھی کوڈ }
سمبول آئیٹرار میٹھد کا استعمال کیا جائے گا، فاراً آف
خودکار بلاوٹ کریں.
لیکن ہم وہ کو دستی سے بلاوٹ کرسکتے ہیں:
مثال
لیٹ آئیٹرار = می مبر [سمبول آئیٹرار](); میکرو (صادق) { کنسٹ ریزیلٹ = آئیٹرار کی بعد(); اگر (ریزولٹ کا کامیاب) بریک; // کسی بھی کوڈ }