
برای استفاده از حلقه در آرایه ها همیشه for و یا foreach گزینه ی ایده آلی نخواهد بود، امروز میخوایم در مورد دو تابع دیگه که برای آرایه ها کاربرد داره آشنا بشیم.
این تابع مقادیری که با اون چیزی که میخوایم مطابقت داشته باشن رو نشون میده، مثلا آرایه ی زیر رو در نظر بگیرین:
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 کنن.
این تابع هم همون کار قبلی رو میکنه ولی فرقش اینه که به جای 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://t.me/modos_dev