javascriptArray.some() and Array.every()آزمون اعضای آرایه با some و every در جاوااسکریپت
some و every در جاوااسکریپت پاسخ بله یا خیر دربارهٔ آرایه میدهند؛ داشتن حداقل یک مورد، معتبر بودن همه و رفتار آرایهٔ خالی را بررسی کنید.
مفهوم به زبان ساده
برای پاسخ به «آیا دستکم یک درس تمام شده؟» لازم نیست آرایهای از همهٔ درسهای تمامشده بسازید. some با یافتن نخستین عضو پذیرفتهشده، true میدهد و بررسی را متوقف میکند. every پرسش دیگری میپرسد: آیا همهٔ عضوهای بررسیشده شرط را دارند؟ با نخستین مورد مردود، false میدهد و ادامه نمیدهد. خروجی هر دو بولی است؛ نه خود عضو و نه آرایهٔ انتخابها.
در مثال، وضعیت سه درس را داریم. یک درس کامل شده، ولی همه کامل نیستند. نمونهٔ دوم نشان میدهد رفتار آرایهٔ خالی باید جدا فهمیده شود: some روی آن false و every روی آن true است. بنابراین اگر تأیید یک مرحله به «داشتن حداقل یک درس و تکمیل همهٔ درسها» نیاز دارد، بررسی طول و every را با هم بنویسید.
تابع آزمون را برای تصمیم خوانا نگه دارید و به اجراشدن آن برای همهٔ عضوها تکیه نکنید؛ توقف زودهنگام بخشی از رفتار این روشهاست. اگر خود نخستین عضو را میخواهید، find مناسب است و اگر همهٔ تطبیقها لازماند، filter را انتخاب کنید. برای تمرین، فهرست را با یک درس تکمیلشده و سپس فهرست خالی جایگزین کنید و خروجیها را پیشبینی کنید.
کجا به کار میآید؟
- بررسی وجود دستکم یک ردیف خطادار یا تکمیلشده
- تأیید شرط مشترک همهٔ ردیفها با سیاست روشن برای دادهٔ خالی
از تعریف تا یک مثال واقعی
const lessons = [{ done: true }, { done: false }, { done: false }];
console.log(lessons.some((lesson) => lesson.done));
console.log(lessons.every((lesson) => lesson.done));
console.log([].some(() => true));
console.log([].every(() => false));
console.log(lessons.length > 0 && lessons.every((lesson) => lesson.done));
true false false true false
این مثال چطور کار میکند؟
some با مشاهدهٔ درس نخست به پاسخ true میرسد.
every با درس دوم متوقف میشود و false میدهد.
آرایهٔ خالی هیچ مورد موفقی برای some ندارد.
every برای آرایهٔ خالی true است؛ شرط طول، نیاز به وجود داده را جدا بیان میکند.
اشتباه رایج
true شدن every بهتنهایی ثابت نمیکند آرایه عضو دارد. همچنین callback این روشها ممکن است برای تمام عضوها اجرا نشود.
این را به خاطر بسپارید
some برای حداقل یک مورد و every برای همهٔ موارد است؛ معنای فهرست خالی را در قرارداد محصول روشن کنید.