Skip to content

Chapter 6: JavaScript Array

6-1: আসছে তেড়ে Array, পারলে ঠেকা

একদিন তুই ঘুম থেকে উঠে দেখলি, বাসায় খাওয়ার কিছুই নেই। তখন তুই দোকানে গেলি এক হালি ডিম কিনতে।

তুই নিশ্চয়ই একটা ডিম কিনে বাসায় এসে সেটা বাসায় রেখে আবার দোকানে গিয়ে আরেকটা ডিম আনতে যাবি না। আবার সেটা বাসায় রাখার পর একইভাবে তৃতীয় এবং চতুর্থ ডিম আনতে যাবি না; বরং চারটা ডিমই একেবারে নিয়ে আসবি।

একইভাবে তুই যদি এক কেজি আলু বা এক ডজন কমলা কিনিস, সেগুলাও আলাদা আলাদাভাবে রাখিস না; বরং একসাথেই রাখিস।

কোডিংয়ের ক্ষেত্রেও যদি আমাদের একসাথে অনেকগুলো মান নিয়ে কাজ করতে হয়, তাহলে একাধিক ভেরিয়েবল ডিক্লেয়ার না করে একটি অ্যারে ব্যবহার করা যায়। অ্যারে হলো একটি ভেরিয়েবলে অনেকগুলো মান গুছিয়ে রাখার সিস্টেম।

অ্যারে ডিক্লেয়ার করতে হলে তিনটি কাজ করতে হবে:

ভেরিয়েবলের নাম দেয়ার মতো করে অ্যারের একটি নাম দিতে হবে। থার্ড ব্র্যাকেট বা স্কয়ার ব্র্যাকেটের [ ] মধ্যে যতগুলা ম্যান আছে, সবগুলার মান রাখতে হবে। প্রতিটি মানের পরে কমা (,) ব্যবহার করতে হবে। তবে সর্বশেষ উপাদানের পরে আর কমা দেয়া লাগবে না। অর্থাৎ যেকোনো দুইটা মানের মধ্যে কমা চিহ্ন দিতে হবে।

যেমন:

javascript
const numbers = [12, 22, 141, 121];

অ্যারে হলো অনেকগুলো মান একটি ভেরিয়েবলে রাখার সিস্টেম। আগে আমরা যেভাবে একেকটি ভেরিয়েবল ডিক্লেয়ার করতাম, সেখানে একটা ভেরিয়েবলে একটা মান রাখতাম। আর এখন একসাথে অনেকগুলা মান রাখার জন্য আলাদা আলাদা ভেরিয়েবল ডিক্লেয়ার না করে একটি অ্যারে ব্যবহার করে অনেকগুলো মান রাখতে পারস।

যেমন, ধর তোর 1 থেকে 10 পর্যন্ত সংখ্যা রাখা দরকার। সে ক্ষেত্রে তুই আলাদা আলাদা 10টা ভেরিয়েবল ডিক্লেয়ার করে দশটা মান দশটা ভেরিয়েবলে রাখতে পারবি। তবে এইগুলা চেইঞ্জ করা, আরও মান যোগ করা বা দুই-একটা বাদ দেয়া অনেক ভেজাল হয়ে যায়। তার চাইতে বরং তুই সহজেই একটি অ্যারে ব্যবহার করতে পারস।

javascript
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

এই সিস্টেমে আমরা বিভিন্ন ধরনের অ্যারে তৈরি করতে পারি। যেমন:

javascript
const marks = [82, 76, 54, 45];
const friends = ["abul", "babul", "cabul", "dabul", "bulbul"];
const passed = [true, false, true, false];

সাধারণত একই ধরনের মান অ্যারেতে রাখা ভালো। তবে বিভিন্ন ধরনের মানও রাখা যায়। যদিও এটি করা উচিত না। অর্থাৎ কোনো একটা অ্যারের সবগুলা উপাদান হয় সংখ্যা বা নাম্বার টাইপের মান হতে পারে। অর্থাৎ সবগুলা উপাদানের মান একই টাইপের মান হওয়া উচিত।

javascript
const mixedArray = [12, "Dim", true, 45.566];

লম্বা খাম্বা দৈর্ঘ্য

বিয়ের বাজারে সবাই জানতে চায়, কে কত লম্বা বা কত বড় বা কার কত সাইজ বা দৈর্ঘ্য। প্রোগ্রামিংয়ের ক্ষেত্রেও মাঝেমধ্যে দরকার পড়ে, কোন অ্যারে কত বড় বা সেটার ভিতরে কয়টা উপাদান আছে। হয়তো কয়টা উপাদান আছে, সেটার ওপর নির্ভর করে, তুই কোনো একটা কাজ করবি।

অ্যারের ক্ষেত্রে লেন্থ(length) বা সাইজ জানতে চাওয়া মানে সেই অ্যারের মধ্যে কয়টা উপাদান আছে, আর কিছু না।

ধর, প্রথমে একটি অ্যারে ডিক্লেয়ার করলাম:

javascript
const numbers = [1, 5, 66, 11, 45];

এইটা ছোট একটা অ্যারে, তাই এখানে কটি উপাদান আছে, সেটা আমরা দেখে বলতে পারি। কিন্তু যদি অনেক অনেক বড় অ্যারে বা অনেক সময় অ্যারের নাম দেখা গেলেও সব মান বা উপাদান দেখা যায় না, তখন কিন্তু গুণে গুণে বলতে পারবি না, কয়টা উপাদান আছে। ঠিক তখন অ্যারের নামের পরে একটি ডট চিহ্ন (.) দিয়ে length লিখলেই সেই অ্যারেতে কতটি উপাদান রয়েছে, তা জানা যাবে।

javascript
const numbers = [1, 5, 66, 11, 45];
const size = numbers.length;
console.log(size);

অর্থাৎ numbers.length লিখে দিলেই numbers অ্যারেতে কতটি উপাদান রয়েছে, তা দেখাবে।

JavaScript Array Problem for Practice:

  1. তুই একটা অ্যারে বানালি, যেখানে 71 থেকে 79 পর্যন্ত সংখ্যাগুলো রাখ।

  2. তোর বাসায় একটা ছোট ফ্রিজ আছে, যেখানে ঠিক 5টা ফল রাখতে পারিস। তুই একটা অ্যারে বানিয়ে তাতে আপেল, কলা, কমলা, আম আর পেয়ারা রাখলি।

  3. ধর, তুই একদিন বাজারে গিয়েছিলি। তোর ব্যাগে আলু, পেঁয়াজ, বেগুন, মুলা, গাজর, টমেটো, ঢ্যাঁড়স, লাউ, শসা আর পটল 10টা সবজি রাখলি। একটা প্রোগ্রাম লিখে বের কর, ব্যাগে মোট কয়টা সবজি আছে।

  4. তোর 5টা প্রিয় সিনেমার নাম একটা অ্যারেতে রাখ।

  5. একটা অ্যারে লিখ, যেটার মধ্যে 11 থেকে 30-এর মধ্যে বিজোড় সংখ্যাগুলো থাকবে।

  6. তোর চারপাশে তাকিয়ে যে যে কালার দেখতে পারতেছস, সেগুলার একটা অ্যারে বানা। তারপর সেই অ্যারের লেন্থ কনসোল লগ কর।

  7. কয়েকটা দেশের রাজধানীর নাম নিয়ে একটা অ্যারেতে রাখ এবং তার লেন্থ কনসোল লগ কর।

6-2: কার index কত ছোট

বাসে করে সবাই পিকনিকে যাওয়ার সময় সিট কার সামনে পড়ছে, আর কার পিছনে বসছে— এইটা নিয়ে মারামারি, মন কালাকালি, এমনকি হাতাহাতিও হয়। কারণ কে আগে বসছে, আর কে পরে বসছে— সেটা ম্যাটার করে। দেখবি যে, আগে সিট পায়, তার সিটের মান ছোট। হয়তো 1, 2 বা 3। আর যে পিছনে সিট পায়, তার সিট নাম্বার 12, 14, বা 17।

এমনকি খাবার দেয়ার লাইনে কে আগে আছে, আর কে পরে আছে— সেটা মেটার করে। কারণ, যে আগে আছে, সে আগে খাবার পাবে। আর যে পিছনে পড়ে আছে, সে পরে খাবার পাবে।

একইভাবে অ্যারের মধ্যে কোন উপাদান কোন পজিশনে আছে, সেটা মেটার করে। সেজন্য অ্যারের প্রতিটি উপাদানের একটি নির্দিষ্ট পজিশন থাকে, অনেকটা ক্রিকেট খেলায় খেলোয়াড়দের মতো। কে আগে ব্যাটিং করবে, আর কে পরে ব্যাটিং করবে, এমন একটা সিরিয়াল নম্বর থাকে। ঠিক একইভাবে, অ্যারের উপাদানগুলোরও একটি সিরিয়াল বা পজিশন থাকে।

javascript
const numbers = [3, 5, 66, 11, 45];

অ্যারের প্রতিটি উপাদানের পজিশন জিরো থেকে শুরু হয়। অর্থাৎ 0 পজিশনে রয়েছে 3, 1 পজিশনে 5, 2 পজিশনে 66, 3 পজিশনে 11 এবং 4 পজিশনে 45।

javascript
                [3, 5, 66, 11, 45];
Position ->     0   1   2   3   4

সব প্রোগ্রামিং ল্যাঙ্গুয়েজে অ্যারে পজিশনিং সিস্টেম একই থাকে, অর্থাৎ স্টার্টিং পজিশন জিরো থেকে শুরু হয়। এই পজিশনকে অ্যারেতে ইন্ডেক্স বলা হয়। আর অ্যারের ইন্ডেক্সিং শুরু হয় জিরো (0) থেকে।

javascript
const numbers = [10, 25, 26, 31, 42, 84, 38, 12, 1];

কে বসছে ওই চেয়ারে

এখন যদি তোকে জিজ্ঞাসা করা হয়, ওপরের অ্যারেতে 4 নম্বর ইন্ডেক্সের উপাদানের মান কত? উত্তর হবে, 4 নম্বর ইন্ডেক্সের মান 42। যদি বলা হয়, 1 নম্বর ইন্ডেক্সের মান কত? উত্তর হবে 25।

এখন যদি তুই কোনো নির্দিষ্ট ইন্ডেক্সের মান নিয়ে কাজ করতে চাস অথবা কোনো নির্দিষ্ট ইন্ডেক্সের মানকে আউটপুটে দেখাতে চাস, তখন তুই সেটা কীভাবে দেখাবি?

অ্যারের নাম লিখে স্কয়ার ব্র্যাকেটের মধ্যে ইন্ডেক্স লিখে দিলে সেটি ওই ইন্ডেক্সের মানকে বোঝাবে। যেমন, numbers[0] কোডের আউটপুট হবে 10। কারণ, জিরোতম ইন্ডেক্সের মান হলো 10।

javascript
const numbers = [10, 25, 26, 31, 42, 84, 38, 12, 1];
console.log(numbers[0]);
console.log(numbers[3]);

Output: 10;
31;

এভাবে তুই প্রতিটি মানের ইন্ডেক্স প্রিন্ট করে বা বিভিন্ন কাজে ব্যবহার করতে পারবি। চাইলে একটি নির্দিষ্ট ইন্ডেক্সের মানকে অন্য কোনো ভেরিয়েবলেও স্টোর করতে পারিস:

javascript
const numbers = [10, 25, 26, 31, 42, 84, 38, 12, 1];
const fourth = numbers[4];
console.log(fourth);

Output: 42;

আর তুই যদি এমন কোনো একটা ইনডেক্স দিলি, সেখানে কোনো উপাদান নাই, তাহলে কী পাবি? তাহলে জাভাস্ক্রিপ্ট তোকে বলবে, সেই ইনডেক্সে উপাদান ডিফাইন করা নাই। অর্থাৎ সেই পজিশনে উপাদানের মান undefined।

javascript
const numbers = [10, 25, 26, 31, 42, 84, 38, 12, 1];
const fourth = numbers[14];
console.log(fourth);

Output: undefined;

তুই চাইলে কোনো নির্দিষ্ট ইন্ডেক্সের মানকে আপডেটও করতে পারবি। জাস্ট বামপাশে অ্যারের নাম লিখে তারপর স্কয়ার ব্র্যাকেটে লিখে তার ভিতরে ইনডেক্সের মান লিখে দিবি। তারপর সমান চিহ্ন দিয়ে ডানপাশে নতুন মান দিয়ে দিবি। নিচের মতো করে—

javascript
const numbers = [10, 25, 26, 31, 42, 84, 38, 12, 1];
numbers[4] = 100;
console.log(numbers);

আউটপুট: [10, 25, 26, 31, 100, 84, 38, 12, 1];

জাস্ট অ্যারের নাম লিখে স্কয়ার ব্র্যাকেটের মধ্যে ইন্ডেক্স দিয়ে সেখানে নতুন ভ্যালু অ্যাসাইন করলে সেটি ওই ইন্ডেক্সের মানকে আপডেট করে ফেলবে।

আমরা পরবর্তীতে আরও অনেক কিছু অ্যারে সম্পর্কে এক্সপ্লোর করব।

JavaScript Array Index Practice:

  1. তুই তোর সব বন্ধুদের নাম একটা অ্যারেতে রাখলি। এখন তুই বের কর, 3 নম্বর ইনডেক্সে কে আছে।

  2. তোর 7টা প্রিয় বইয়ের নাম একটা অ্যারেতে রাখ। তারপর দেখ, 5 নম্বর পজিশনের বইয়ের নাম কী।

  3. তুই একটা অ্যারে বানালি, যেখানে 1 থেকে 10 পর্যন্ত সংখ্যাগুলো রাখলি। এখন 7 নম্বর পজিশনের মানকে 30 দিয়ে আপডেট কর।

  4. তোর মোবাইলে কিছু গেম আছে এবং তুই সেগুলো একটা অ্যারেতে রাখলি— 'ফ্রি ফায়ার', 'পাবজি', 'ক্যান্ডি ক্রাশ', 'টেম্পল রান'। এখন তুই চাস, 2 নম্বর ইন্ডেক্সের গেমটা পরিবর্তন করে সেখানে 'সাবওয়ে সার্ফার' রাখবি। একটা প্রোগ্রাম লিখে সেটাই কর।

  5. তোর পরিবারের সদস্যের নাম একটা অ্যারেতে রাখ। তারপর থার্ড পজিশনের সদস্যের নাম আউটপুট হিসেবে দেখা।

  6. তুই প্ল্যান করলি 7টা দেশ ঘুরবি। দেশগুলোর নাম একটা অ্যারেতে রাখ। তারপর 4 নম্বর পজিশনের দেশের নাম বের কর।

  7. তোর পড়ার টেবিলে 4টা জিনিস আছে। সেগুলোর নাম একটা অ্যারেতে রাখ। তারপর 7 নম্বর পজিশনের জিনিসটা কী, সেটি বের কর।

6-3: push pop-এর পুষ্পা

মানুষ বদলায়। কারণে-অকারণে বলদায়। নিজে নিজে বদলাতে না পারলে চাপে পড়ে বদলায়। একইভাবে পরিবার বদলায়। পরিবারে নতুন সদস্য জন্ম নেয়। আবার বয়স্ক মানুষ পৃথিবী ছেড়ে চিরতরে বিদায় নেয়। একইভাবে দরকার হলে অ্যারেও বদলাতে পারে। সেটাতে নতুন উপাদান যোগ হতে পারে। নতুন এক বা একাধিক উপাদান যোগ হতে পারে। আবার উপাদান বের করে দেয়া লাগতেও পারে।

এই জিনিসগুলোই ফটাফট দেখে ফেলি। তার আগে একটি অ্যারে ডিক্লেয়ার করে ফেল:

javascript
const numbers = [12, 87, 98, 45];

এখন যদি তোর অ্যারেতে আরও উপাদান যোগ করার প্রয়োজন হয়, তখন তুই সেটা কীভাবে করবি?

অ্যারেটাকে একটা লাইনের সাথে তুলনা করতে পারস। হতে পারে বাস বা ট্রেনের টিকেট কাটার লাইন কিংবা বাথরুমে যাওয়ার লাইন। এখন এই লাইনে সে কোথায় দাঁড়াবে। স্বাভাবিকভাবেই সে লাইনে আগে থেকে যত জন আছে, সে গিয়ে তাদের পিছনে দাঁড়াবে। অর্থাৎ নতুন যে লাইনে দাঁড়াতে আসবে, সে লাইনের একদম লাস্ট ব্যক্তি হিসেবে লাইনে দাঁড়াবে। একইভাবে অ্যারের মধ্যে যখনই উপাদান যোগ করতে যাবি, তখন সে অ্যারের মধ্যে লাস্ট উপাদান হিসেবে যোগ হবে।

আর অ্যারের মধ্যে উপাদান যোগ করার জন্য সেই অ্যারের মধ্যে ধাক্কাই ধাক্কাই ঠেলে ঠেলে উপাদানকে push করতে হবে। এই পুশ করার জন্য, যে অ্যারের মধ্যে উপাদান পুশ করবি, সেটার নাম লিখে তারপর ডট চিহ্ন (.) দিবি। এরপর push লিখে দুইটা ব্র্যাকেট দিবি। তারপর সেই ব্র্যাকেটের ভিতরে যে উপাদান যোগ করবি, সেটা লিখবি। অনেকটা নিচের মতো করে। তাহলে সেই উপাদান অ্যারের মধ্যে যোগ হয়ে যাবে।

javascript
const numbers = [12, 87, 98, 45];
numbers.push(44);
console.log(numbers);

Output: [12, 87, 98, 45, 44];

এভাবে push() ব্যবহার করে একসাথে একাধিক উপাদানও যোগ করা যায়:

javascript
const numbers = [12, 87, 98, 45];
numbers.push(44, 65, 98, 11, 9);
console.log(numbers);

Output: [12, 87, 98, 45, 44, 65, 98, 11, 9];

এই সিস্টেমে যেকোনো অ্যারেতে উপাদান যোগ করতে পারবি:

javascript
const friends = ["balam", "kalam", "salam"];
friends.push("khailam");
console.log(friends);

Output: ["balam", "kalam", "salam", "khailam"];

এতক্ষণ পর্যন্ত আমরা push() ব্যবহার করে উপাদান অ্যাড করার পদ্ধতি শিখেছি। এখন pop() মেথড ব্যবহার করে উপাদান রিমুভ করা শিখব।

ললি POP

ছোটবেলায় আমাদের স্কুলে ললিপপ খাওয়া নিষেধ ছিল। কেউ ললিপপ খেয়ে জিহ্বা লাল করে ফেললে টিচার তাকে ক্লাস থেকে বের করে দিত।

এখন অনেক সময় দেখি, পাতি নেতা এসে লাইনে সবার লাস্টে যে আছে, তাকে বলল— তুই ফুট। যা ভাগ। এই শুনে একদম লাস্টে যে আছে, সে দৌড়ে পালিয়ে গেল। একইভাবে কোনো অ্যারের নামের পরে pop বললে তার সবশেষ উপাদান অ্যারে থেকে বের হয়ে যায়।

javascript
const friends = ["balam", "kalam", "salam", "gelam", "pailam"];
friends.pop();
console.log(friends);

Output: ["balam", "kalam", "salam", "gelam"];

ওপরে আমরা দেখেছি, pop() মেথড সর্বশেষ উপাদানটি রিমুভ করে। এখন যদি আবার pop() করি, তাহলে এখন যে উপাদান একদম সবার শেষে আছে, সে বের হয়ে যাবে।

javascript
const friends = ["balam", "kalam", "salam", "gelam"];
friends.pop();
console.log(friends);

Output: ["balam", "kalam", "salam"];

এভাবে আমরা যেকোনো অ্যারের সর্বশেষ উপাদানটি রিমুভ করতে পারি। এ ছাড়া, pop() করা উপাদানকে ভেরিয়েবলের মধ্যে স্টোর করেও রাখতে পারি:

javascript
const friends = ["balam", "kalam", "salam", "gelam"];
const pop1 = friends.pop();
console.log(pop1);

Output: "gelam";

এতক্ষণ ধরে আমরা push() এবং pop() মেথড শিখিছি। এই দুইটি মেথডের মধ্যে একটি কমন জিনিস আছে— যখন উপাদান অ্যাড করা হয়, তখন সেটি সর্বশেষে যোগ হয় এবং যখন রিমুভ করা হয়, তখন সেটি সর্বশেষ উপাদানটি রিমুভ করে।

সামনে থেকে বের হয়ে যাও

তুই যদি বলিস, ভাই, বাথরুমের লাইনে দাঁড়ায় আছি। এখন বাথরুম খালি হলে তো একদম সবার লাস্টের জনকে লাইন থেকে pop করলে হবে না; বরং লাইনের একদম সবার সামনেরজন বের হয়ে বাথরুমে যাবে। সে ক্ষেত্রে কী করব। এইটার উত্তর হচ্ছে pop ইউজ না করে সেইমভাবে shift ইউজ করতে হবে।

javascript
const friends = ["balam", "kalam", "salam", "gelam", "pailam"];
friends.shift();
console.log(friends);

Output: ["kalam", "salam", "gelam", "pailam"];

আবার যদি বলিস, আমরা লাইনে দাঁড়ায় আছি, ঠিক সেই মুহূর্তে হেডমাস্টার স্যার চলে আসছেন। এখন স্যার তো সবার পিছনে দাঁড়াবেন না; বরং স্যার একদম এসেই লাইনে সবার আগে দাঁড়ায় যাবেন বা আমরা সম্মান করে স্যারকে সবার আগে দাঁড়াতে বলব। এইটা কীভাবে করব?

এইটারও উত্তর হচ্ছে unshift ইউজ করবি।

javascript
const teachers = ["Assistant sir", "Class sir", "PT Sir"];
teachers.unshift("Head sir");
console.log(teachers);

Output: ["Head sir", "Assistant sir", "Class sir", "PT Sir"];

JavaScript Push-Pop Methods Practice:

  1. সংখ্যার একটা অ্যারে আছে: [10, 20, 30, 40, 50]। এখন এই অ্যারেতে 60 যোগ করে অ্যারেটি আউটপুটে দেখা।

  2. তুই কিছু নাম লিখে রাখছিস অ্যারেতে: 'সজিব', 'সাগর', 'সাকিব', 'সোহেল'। এখন তোর মনে হলো নতুন বন্ধু 'সুমন'কে এই অ্যারেতে যোগ করতে হবে। একটা প্রোগ্রাম লিখে দেখ, সুমনকে সবার শেষে যোগ কর।

  3. তোর মোবাইলে যে যে গেম ইনস্টল করা আছে, সেগুলা একটা অ্যারেতে রাখ। তারপর সবার শেষে যে গেমের নাম দেয়া আছে, সেটা রিমুভ করে ফেল। এরপর তোর অ্যারেতে কী কী গেম বাকি রইল, সেগুলা আউটপুট হিসেবে দেখা।

  4. এই অ্যারেতে [24, 36, 48, 60]। একদম প্রথম উপাদান হিসেবে 12-কে যোগ করে পুরা অ্যারেটা আউটপুট হিসেবে দেখা।

  5. তোর কাছে 5টি বইয়ের নাম দিয়ে একটা অ্যারে আছে। এখন তুই সবার প্রথম বইটা পড়ে শেষ করে ফেলছস। তাই প্রথম বইয়ের নামটা অ্যারে থেকে রিমুভ করে ফেল। তারপর বাকি নামগুলো আউটপুটে দেখা।

6-4: কে include আছে কে নাই

মাঝেমধ্যে পোলাপান গো ধরে। তুই তাকে পিকনিকে নিয়ে গেলে আমি যাব না বা তাকে তোর বন্ধু বানালে আমি তোর সাথে থাকব না। এইসব ক্ষেত্রে জানতে চায়, কোনো একটা মানুষ কিছুর মধ্যে আছে কি না। জাভাস্ক্রিপ্ট বা সব প্রোগ্রামিং ল্যাঙ্গুয়েজেও এইটার দরকার পড়ে। কোনো একটা উপাদান কোনো একটা অ্যারের মধ্যে আছে কি না।

ধর, তোর কাছে একটি অ্যারে আছে। এখন যদি আমি জানতে চাই, এই অ্যারেতে gelam আছে কি না, তাহলে includes() মেথড ব্যবহার করতে পারবি।

অনেকটা push-এর মতো করে। এইটা ইউজ করার জন্য যেই অ্যারের মধ্যে উপাদান খুঁজবি, তার নাম আগে লিখবি। এরপর একটা ডট চিহ্ন (.) দিয়ে includes লিখবি। এরপর দুইটা ব্র্যাকেটের ভিতরে যে উপাদান আছে কি না জানতে চাস, সেটার নাম লিখবি। যদি সংখ্যা খুঁজোস, তাইলে সরাসরি সংখ্যা লিখে দিবি। আর যদি কোনো স্ট্রিং টাইপের মান খুঁজতে যাস, তাহলে সেটা স্ট্রিংয়ের মতো করে কোটেশনের ভিতরে লিখবি। আর কিছু না।

যদি সেই উপাদান অ্যারের মধ্যে থাকে, তাহলে তোকে true বলবে। আর যদি না থাকে, তাহলে false বলবে। খুবই সিম্পল কথাবার্তা।

javascript
const friends = ["balam", "kalam", "salam", "gelam", "pailam"];
const exist = friends.includes("gelam");
console.log(exist);

Output: true;

যদি এমন কোনো উপাদান চেক করতে যাই, যা নেই:

javascript
const friends = ["balam", "kalam", "salam", "gelam", "pailam"];
const exist = friends.includes("khailam");
console.log(exist);

Output: false;

আমরা if-else-এর শর্তের মধ্যেও চেক করার জন্য includes() ব্যবহার করতে পারি:

javascript
const friends = ['balam', 'kalam', 'salam', 'gelam', 'pailam'];
if (friends.includes('khailam')) {
  console.log('Party');
} else {
  console.log('No food. We are fasting.');
}

Output: No food. We are fasting.

এখানে মনে রাখতে হবে, includes হলো case-sensitive, অর্থাৎ বড় হাতের এবং ছোট হাতের অক্ষর আলাদাভাবে গণ্য হবে:

javascript
const friends = ["balam", "kalam", "salam", "gelam", "pailam"];
console.log(friends.includes("Gelam"));

Output: false;

কে কোথায় include আছিস

আমরা includes দিয়ে অ্যারের মধ্যে কোনো উপাদান আছে কি না, চেক করতে পারি। তবে চেক করার আরেকটা উপায় হচ্ছে, উপাদানের ইনডেক্স জানা। যদি ইনডেক্স 0-এর চাইতে বড় কোনো সংখ্যা হয়, তাহলে সেই উপাদান অ্যারের মধ্যে আছে এবং সেই পজিশন জানতে পারব indexOf ইউজ করে। অনেকটা includes-এর মতোই কাজ করবে। তবে ডিফারেন্স হচ্ছে includes উপাদান থাকলে true, আর না থাকলে false বলে। আর indexOf তোকে index-এর মান দিয়ে দিবে।

javascript
const friends = ["balam", "kalam", "salam", "gelam", "pailam"];
const index = friends.indexOf("gelam");
console.log(index);

Output: 3;

অ্যারের মধ্যে কোনো উপাদান থাকলে সেটার ইনডেক্স 0 বা তার বড় কোনো সংখ্যা হবেই হবে। কোনো মাফ নাই। আর যদি কোনো কারণে কোনো উপাদানের ইনডেক্স যদি -1 দিয়ে দেয়, তাহলে 100% নিশ্চিত হয়ে বলতে পারবি, সেই উপাদান অ্যারের মধ্যে নাই।

javascript
const friends = ["balam", "kalam", "salam", "gelam", "pailam"];
const index = friends.indexOf("khailam");
console.log(index);

Output: -1;

যেহেতু array-এর মধ্যে ইনডেক্স শূন্য থেকে শুরু হয়। তাই array-এর মধ্যে কোনো উপাদান থাকলে সেটার ইনডেক্সের মান 0 বা তার চেয়ে বড় কোনো সংখ্যা হবে। কোনোভাবেই 0-এর ছোট কোনো ইনডেক্স হওয়া সম্ভব না। তাই যদি উপাদান অ্যারের মধ্যে না থাকে, তাহলে সেটার ইনডেক্সকে -1 দিয়ে বুঝায়— সেই উপাদান আসলে array-এর মধ্যে নাই।

এখন আবার দুঃখ করে বলিস না— সে আমাকে তার লাইফের -1 পজিশনে রাখছে।

JavaScript Include and indexOf method Practice:

  1. includes আর indexOf এর মধ্যে পার্থক্য কি?

  2. তুই একটা প্রোগ্রাম বানাতে চাস, যেটাতে 'আম' নামক একটা ফল লিস্টে আছে কি না, সেটা চেক করবে। যদি থাকে, তবে আউটপুটে বলবে, 'আম আছে', আর না থাকলে বলবে, 'আম নেই, গাছে উঠ'। ফলের অ্যারেতে 'আপেল', 'কলা', 'আম' ও 'লিচু' আছে।

  3. তুই একটা অ্যারে বানালি, যেখানে নামগুলো আছে— 'বাবুল', 'আলিফ', 'ছোটন'। এখন প্রোগ্রাম লিখে দেখ, বাবুলের ইনডেক্স নাম্বার কত।

  4. ধর, তুই বন্ধুদের নামের একটা লিস্ট বানিয়েছিস অ্যারেতে— 'রিমন', 'রিফাত', 'রাজিব'। এখন তোর মনে হলো, 'রিফাত'-এর অবস্থানটা ভুলে গেছিস। একটা প্রোগ্রাম লিখে রিফাতের ইনডেক্স বের কর।

  5. তুই কিছু শহরের নাম লিখে রাখছিস— 'Dhaka', 'Chittagong', 'Sylhet'। এখন তুই ভাবলি, আরেকটা শহরের নাম যোগ করবি, কিন্তু ভুলে ছোট হাতের rajshahi যোগ করে ফেললি। এবার প্রোগ্রাম লিখে চেক কর, RajShahi আছে কি না।

  6. একটা প্রোগ্রাম বানিয়ে 'বৃষ্টি' নামক উপাদান আছে কি না, চেক কর। যদি থাকে, তাহলে আউটপুটে বলবি 'I need umberalla', না থাকলে বলবি 'No rain no pain'। অ্যারেতে 'দীঘি', 'মেঘ', 'বৃষ্টি' ও 'বর্ষা' আছে।

  7. তোর প্রিয় খেলাধুলার একটা অ্যারে আছে— 'ফুটবল', 'ক্রিকেট', 'ভলিবল'। এখন তুই চেক করতে চাস 'ব্যাডমিন্টন' নামক খেলাটি অ্যারেতে আছে কি না।

Released under the MIT License.