every লিটনের some flat
জাভাস্ক্রিপ্টে some() আর every() হলো অ্যারে মেথড, যেগুলো নির্দিষ্ট শর্তের ওপর ভিত্তি করে অ্যারের সব আইটেমকে চেক করে। কিন্তু এদের কাজ একটু আলাদা। চল, এদের কাজ আর ব্যবহার সম্পর্কে জেনে নিই!
some() মেথড
some একটা ইংরেজি শব্দ। এইটার মানে হচ্ছে কিছু। অর্থাৎ অন্তত একটা বা তার বেশি। এইটুক যদি বুঝছ, তাহলে আর প্যারা নাই। জাভাস্ক্রিপ্টে অ্যারের নামের পর ডট দিয়ে তারপর some লিখে সেটার ভিতরে filter বা find-এর মতো করে তুই একটা শর্তওয়ালা অ্যারো ফাংশন দিয়ে দিতে পারস। যদি অ্যারের মধ্যে অন্তত একটা আইটেম বা উপাদান ঐ শর্ত পূরণ করে, তাহলে এটা true রিটার্ন করে। আর যদি কোনো আইটেমই শর্ত পূরণ না করে, তাহলে false রিটার্ন করে।
যেমন: ধর, তুই দেখতে চাস যে, কোনো একজন স্টুডেন্ট পাস করেছে কি না।
const scores = [30, 45, 55, 80, 90];
const hasPassed = scores.some(score => score >= 50);
console.log(hasPassed);
Output: trueএখানে some() চেক করছে যে, অন্তত একটা আইটেম (স্কোর) 50 বা তার বেশি আছে কি না। যেহেতু 80 এবং 90 পয়েন্ট 50-এর বেশি, তাই some তোকে true রিটার্ন করেছে।
every() মেথড
every() মেথড চেক করে, অ্যারের সব আইটেম শর্ত পূরণ করে, তাহলে এটা true রিটার্ন করে। আর যদি একটা আইটেমও শর্ত পূরণ না করে, তাহলে এটা false রিটার্ন করে।
যেমন: ধর, তুই দেখতে চাস, সব স্টুডেন্ট পাস করেছে কি না।
const scores = [60, 70, 55, 80, 90];
const allPassed = scores.every(score => score >= 50);
console.log(allPassed);
Output: trueএখানে every() চেক করেছে যে, সব স্কোরই 50 বা তার বেশি কি না। যেহেতু সব স্কোরই 50 বা তার বেশি, তাই every() true রিটার্ন করেছে।
আরেকটা উদাহরণ, যেখানে every() false রিটার্ন করবে—
const scores = [60, 45, 55, 80, 90];
const allPassed = scores.every(score => score >= 50);
console.log(allPassed);
Output: falseএখানে 45 উপাদান 50-এর নিচে, তাই every তোকে false রিটার্ন করেছে।
flat
নেস্টেড অ্যারে বলতে বুঝায় একটা অ্যারের উপাদানও আরেকটা অ্যারে। সেটার ভিতরেও আরেকটা অ্যারে থাকতে পারে। যদি অনেক লেভেলে নেস্টেড অ্যারে থাকে, তাহলে অ্যারের নাম, এরপর ডট দিয়ে flat লিখে কল করে দিবি। যদি অনেক অনেক মাল্টি লেভেলের নেস্টেড অ্যারে হয়, তখন একটা প্যারামিটার দিয়ে দিবি। যেমন, আমার দুই লেভেল ডেপ্থ অ্যারে আছে, তাই আমি 2 প্যারামিটার হিসেবে দিয়ে দিছি।
ধর, তোর কাছে nested array আছে এবং তুই সেটাকে একটি single array-তে flatten করতে চাস। flat এই কাজটা করে।
const nested = [1, 2, [3, 4, [5, 6]]];
const flattened = nested.flat(2);
console.log(flattened);
Output: [1, 2, 3, 4, 5, 6]Summary
some চেক করে, অ্যারের অন্তত একটা আইটেম শর্ত পূরণ করে কি না। যদি করে, তাহলে true।
every চেক করে, অ্যারের সব আইটেম শর্ত পূরণ করে কিনা। যদি করে, তাহলে true; না করলে false।
এই মেথডগুলো তুই সহজেই অ্যারে চেক করার জন্য ব্যবহার করতে পারবি। বিশেষ করে যখন অনেক আইটেমের মধ্যে নির্দিষ্ট শর্ত মিলিয়ে দেখতে হয়!
Practice:
- একটা অ্যারে বানা, যেটার নাম numbers এবং দেখা, এই অ্যারেতে 100-এর বড় কোনো সংখ্যা আছে কি না।
- একটা অ্যারে বানা, যেখানে সব এলিমেন্টের মান 5 দিয়ে ভাগ যায় কি না, তা চেক করার জন্য every মেথড ব্যবহার কর।
- words নামের একটা অ্যারে তৈরি কর এবং চেক কর, অন্তত একটি শব্দ "hello"-এর সমান কি না।
- ages নামের একটা অ্যারে তৈরি কর এবং দেখা, সবার বয়স 18-এর বেশি কি না।