ویرگول
ورودثبت نام
رهام رفیعی تهرانی
رهام رفیعی تهرانی
خواندن ۲ دقیقه·۱ سال پیش

راه حل جایگزین برای نبود break در forEach

مقدمه

برنامه نویس ها معمولا در لوپ های for و while دنبال راهی برای کنترل لوپ ها هستند. بعضی موقع ها لازم میشه وصل اجرای لوپ، قطع بشه و دیگه ادامه پیدا نکنه. متاسفانه زمانی که روی یک آرایه در جاوااسکریپت forEach میزنیم، امکانی برای قطع شدن itteration، مشابه عملگر break وجود نداره.

از بین راه حل های مختلف تابع every نزدیک ترین راه حله. چون دقیقا مثل forEach عمل میکنه و میتونیم از امکاناتش به عنوان break استفاده کنیم.


تابع every دقیقا مثل forEach شروع میکنه روی عناصر آرایه لوپ میزنه. با این تفاوت که به ازای هر عنصر باید حتما مقدار boolean (یا true یا false) برگردونیم. اگر منطق داخل حلقه به یک مقدار boolean ختم نشه و مقدار boolean برنگرده با خطا مواجه میشیم.

مقدار true یعنی ادامه بده و برو سراغ عنصر بعدی. مقدار false یعنی دیگه ادامه نده. در واقع به ازای شرایط break میتونیم مقدار false رو برگردونیم . در غیر این صورت مقدار true برگردونیم.

مثال زیر رو مرور کنیم:

میخوایم هر وقت به یک عدد منفی برخوردیم، آخرین عدد مثبت قبلش رو برگردونیم. مقدار پیش فرض رو null در نظر میگیرم و اگر در همون اولین مواجهه به عدد منفی بر بخوریم، مقدار null برمیگرده یعنی هیچ عدد مثبتی پیدا نکردیم. در هر لوپ:

اگر به عدد منفی برخوردیم مقدار false رو برمیگردونیم و لوپ رو قطع میکنیم.

اگر عدد منفی نبود در متغیر lastPositiveItem ذخیره ش میکنیم و با برگردوندن مقدار true اعلام میکنیم که میخوایم جریان itteration ادامه پیدا کنه.

به ازای آرایه اول مقدار ۹ برمیگرده. چون بعدش با عدد منهای یک مواجه میشیم.

به ازای آرایه دوم مقدار null برمیگرده چون همون اول کار با عدد منهای سه مواجه میشیم.



معرفی تابع every

تابع every تابع مهمیه . در واقع کاربرد اصلیش اینه که بررسی کنیم ببینیم آیا همه عناصر آرایه، شرطی که ما اعلام میکنیم رو دارند یا نه.

اگر همه عناصر آرایه شرط مورد نظر ما رو داشته باشند، تابع every مقدار true برمیگردونه. اگر یکی از عناصر آرایه شرط مورد نظر ما رو نداشته باشه، تابع مقدار false برمیگردونه.


موفق باشید :)


تابع everyجاوااسکریپتjavascriptarrays in javascriptآرایه جاوا اسکریپت
برنامه نویسی یک شغل نیست، یک هنره.
شاید از این پست‌ها خوشتان بیاید