ویرگول
ورودثبت نام
modos coding
modos codingدانشجوی کارشناسی کامپیوتر - Blogger & developer
modos coding
modos coding
خواندن ۲ دقیقه·۶ سال پیش

آشنایی با دو متد ()find و ()some در جاوا اسکریپت

توابع find و some در جاوا اسکریپت
توابع find و some در جاوا اسکریپت

برای استفاده از حلقه در آرایه ها همیشه for و یا foreach گزینه ی ایده آلی نخواهد بود، امروز میخوایم در مورد دو تابع دیگه که برای آرایه ها کاربرد داره آشنا بشیم.

تابع ()some

این تابع مقادیری که با اون چیزی که میخوایم مطابقت داشته باشن رو نشون میده، مثلا آرایه ی زیر رو در نظر بگیرین:

var operatives = [ { id: 12, name: 'Baze Malbus', pilot: false }, { id: 44, name: 'Bodhi Rook', pilot: true }, { id: 59, name: 'Chirrut Îmwe', pilot: false }, { id: 122, name: 'Jyn Erso', pilot: false } ];

حالا میخوایم بررسی کنیم که آبجکتی هست که مقدار pilot آن true باشد یا نه.خب اولین چیزی که به ذهنمون میاد استفاده از تابع foreach به صورت زیر هست:

var listHasPilots = false; operatives.forEach(function (operative) { if (operative.pilot) { listHasPilots = true; } });

ولی یخورده این کار طولانی و خسته کنندس و اینجاس که تابع ()some به کمکون میاد:

var listHasPilots = operatives.some(function (operative) { return operative.pilot; });

حتی میتونیم با ES6 از اینم کوتاه ترش کنیم:

const listHasPilots = operatives.some(operative => operative.pilot);

طرز کار این تابع اینطوریه که باید داخلش یه مقدار بولین رو return کنید ( در اینجا operative.pilot ) و شروع میکنه از اولین عنصر مقادیر رو بررسی میکنه، اولین مقداری که true باشه و پیداش کنه از حلقه در میاد و بهتون مقدار true رو بر میگیردونه. توجه کنین که به اولین مقدار که برسه کارش رو متوقف میکنه و دیگه تا آخر آرایه رو چک نمیکنه.

تفاوت این تابع با ()every اینه که در تابع every همه ی مقادیر باید شرط رو true کنن.

تابع ()find

این تابع هم همون کار قبلی رو میکنه ولی فرقش اینه که به جای true و false خود مقدار رو بهتون میده، مثلا آرایه ی زیر رو در نظر بگیرید:

var operatives = [ { id: 12, name: 'Baze Malbus', pilot: false }, { id: 44, name: 'Bodhi Rook', pilot: true }, { id: 59, name: 'Chirrut Îmwe', pilot: false }, { id: 122, name: 'Jyn Erso', pilot: false } ];

این بار میخوایم که اولین آبجکتی که مقدار pilot ش true هست رو در متغیر firstPilot ذخیره کنیم:

var firstPilot = operatives.find(function (operative) { return operative.pilot; });

در ES6:

const firstPilot = operatives.find(operative => operative.pilot);

توجه کنین که این تابع اولین مقداری که با شرط همخونی داشته باشه رو بر میگردونه و اگه میخواین یک لیست رو داشته باشین باید از تابع ()filter استفاده کنین.

مزیت این توابع چیه؟

استفاده از این توابع آماده در جاوا اسکریپت نه تنها باعث میشه کدتون تمیز تر و کوتاه تر باشه، بلکه باعث میشه قصد و هدفتون رو بهتر نشون بدین، یه حلقه ی ساده مثل for ممکنه هر عملکردی داشته باشه ولی با استفاده از یک تابع مثل find خوانایی و درک کد رو بهتر میکنه.

منبع:

https://medium.com/poka-techblog/simplify-your-javascript-use-some-and-find-f9fb9826ddfd

امیدوارم آموزش بالا واستون مفید باشه، توی کانال تلگرامم آموزش ها و مطالب مفید دیگه ای رو قرار میدم، خوش حال میشم که عضو بشین، ممنون.

کانال تلگرام : https://t.me/modos_dev




جاوا اسکریپتبرنامه نویسی
۸
۲
modos coding
modos coding
دانشجوی کارشناسی کامپیوتر - Blogger & developer
شاید از این پست‌ها خوشتان بیاید