Array in JavaScript - Bangla

Array in JavaScript - Bangla

What is an Array

জাভাস্ক্রিপ্টে অ্যারে হচ্ছে একটা স্পেশাল টাইপের ভ্যারিয়েবল , যেইটা একইসাথে মাল্টিপল ভ্যালু হোল্ড/স্টোর করতে পারে।

একটা ভ্যারিয়েবলে আমরা একইসাথে মাত্র একটা ভ্যালু স্টোর করতে পারি। কিন্তু অ্যারে ব্যাবহার করে আমরা একইসাথে একটা সিঙ্গেল ভ্যারিয়েবলে মাল্টিপল ভ্যালু স্টোর করতে পারি। একইসাথে অ্যারে কিন্তু একটা ডেটা স্ট্রাকচারও!

Features of an Array

  • জাভাস্ক্রিপ্ট হচ্ছে ডাইনামিক্যালি টাইপড একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ, এবং জাভাস্ক্রিপ্টে অ্যারে হচ্ছে ডাইনামিক। যেইটার অর্থ হচ্ছে, অন্যান্য স্ট্যাটিক্যালি টাইপড প্রোগ্রামিং ল্যাঙ্গুয়েজ গুলোতে অ্যারে এর length কতটুকু হবে সেইটা স্পেসিফাই করে দেওয়া লাগে, কিন্তু জাভাস্ক্রিপ্ট ডাইনামিক্যালি টাইপড প্রোগ্রামিং ল্যাঙ্গুয়েজ হওয়ার কারণে আমাদের অ্যারে ডিক্লেয়ার করার সময় অ্যারের length কতটুকু হবে সেইটা বলে দেওয়া লাগে না। অ্যারে ইলিমেন্ট গুলো আপডেট হওয়ার সাথে সাথে অ্যারের length ও ডাইনামিক্যালি Increase বা Decrease হইতে পারে। জাভাস্ক্রিপ্টে অ্যারের length রানটাইমেও মডিফাই হতে পারে।

  • আপনার গার্বেজ কালেক্ট করা লাগে না বা আপনার নিজে থেকে গার্বেজ ক্লিন করা লাগে না। তুলনামুলক লো-লেভেল প্রোগ্রামিং ল্যাংগুয়েজ গুলোতে ভ্যারিয়েবল ডিক্লেয়ার করা, মেমোরি Allocate বা Deallocate করা এবং অপ্রয়োজনীয় বা অব্যাবহৃত ভ্যারিয়েবল গুলোকে ক্লিন করা, এই সব জিনিসগুলোই একজন প্রোগ্রামার এর হাতে থাকে বা তার নিজের হাতেই সেইগুলাকে করা লাগে। কিন্তু জাভাস্ক্রিপ্টে সেই ঝামেলা নাই, জাভাস্ক্রিপ্ট হাই-লেভেল প্রোগ্রামিং ল্যাঙ্গুয়েজ হওয়ার কারণে এইগুলা নিয়ে চিন্তা করা লাগে না। কোনো ভ্যারিয়েবল ডিক্লেয়ার করলে তার টাইপ ও বলে দেওয়া লাগে না, আবার Memory Allocate বা Deallocate করার ব্যাপারটাও নাই, জাভাস্ক্রিপ্ট নিজে থেকেই সেইগুলো করে ফেলে। এবং অপ্রয়োজনীয় ডেটা গুলো যেইগুলোকে গার্বেজ বলা হয়, সেই গুলোও নিজে থেকে জাভাস্ক্রিপ্ট ডিলিট করে দিতে পারে তার গার্বেজ কালেক্টর গুণাবলি টার কারণে। যার কারণে জাভাস্ক্রিপ্ট কে গার্বেজ কালেক্টর ল্যাংগুয়েজ ও বলা হয়।

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

Why Array?

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

যদি অ্যারে ব্যাবহার না করে আমরা একেকটা ভ্যারিয়েবলে একেকটা ভ্যালু স্টোর করতে চাইতাম তাহলে অনেকটা এমন হতো -

let bike1 = 'Yamaha';
let bike2 = 'Honda';
let bike3 = 'Bajaj';

উপরে আমরা অ্যারে ব্যাবহার না করে ৩ টা ভ্যারিয়েবলে ভ্যালু অ্যাসাইন করেছিলাম, কিন্তু এইখানে কিছু সমস্যা আছে, যদি আমার অ্যারে ইলিমেন্ট গুলোর ভিতরে লুপ করে বা অ্যারে ট্রাভার্স করে কোনো স্পেসিফিক অ্যারে ইলিমেন্ট খুজতে চাইতাম তাহলে বিষয়টা কেমন হতো? শুধুমাত্র ভ্যারিয়েবল ব্যাবহার করে এই জিনিসটা করা অসম্ভব হয়ে যেত, বা এইখানে ৩ টা ভ্যালুর পরিবর্তে যদি ৩০০ ভ্যালু স্টোর করা লাগত তাহলে কেমন হত? কোডের ১২টা বেজে যেত। কোড আর রিডেবল থাকত না, মেইনটেইন করতে ঝামেলা হতো ইত্যাদি ইত্যাদি।

এইক্ষেত্রে ১ টা সমাধান হচ্ছে অ্যারে ব্যাবহার করা।

অ্যারে তে আমরা একটা ভ্যারিয়েবল এর ভিতরে মাল্টিপল ভ্যালু স্টোর করতে পারি এবং সেই অ্যারে ইলিমেন্ট এর ইনডেক্স নাম্বারের সাহায্যে অ্যারে ইলিমেন্ট গুলোকে অ্যাক্সেস করতে পারি।

Create an Array using Array Literal:

Array Literal হচ্ছে একটা List of Expressions, যার প্রতিটাই একটা অ্যারে'কে রিপ্রেজেন্ট করে এবং এইগুলা এনক্লোজড বা আবদ্ধ থাকে একটা ওপেনিং এবং একটা ক্লোজিং স্কয়ার ব্র্যাকেটের/[] ভিতরে। প্রতিটা অ্যারে ইলিমেন্ট কে কমা (,) দিয়ে সেপারেট করা হয়। অ্যারে ইলিমেন্ট বলতে অ্যারে এর ভিতরে যেই আইটেম গুলো থাকে সেইগুলোকে বোঝায়। আপনি সাধারণত ২ টা মেথড ফলো করে একটা অ্যারে ক্রিয়েট করতে পারবেন, যেমন আপনি Array Literal ব্যাবহার করে অ্যারে ক্রিয়েট করতে পারবেন আবার অ্যারে Constructor ব্যাবহার করেও অ্যারে ক্রিয়েট করতে পারবেন। এখন আমরা দেখব কিভাবে Literal Syntax ব্যাবহার করে অ্যারে ক্রিয়েট করেত হয়।

Array Syntax:

অ্যারে Literal ব্যাবহার করে অ্যারে ক্রিয়েট করার জন্য প্রথমে let বা const কিওয়ার্ড ব্যাবহার করতে পারি -> তারপরে অ্যারের নাম -> এরপরে ইক্যুয়াল সাইন (=) এবং তারপরে ২টা স্কয়ার ব্র্যাকেট/ [] -> এবং শেষে সেমিকোলন (;)। অ্যারে ইলিমেন্ট গুলো স্কয়ার ব্র্যাকেটের ভিতরে থাকবে এবং প্রতিটা ইলিমেন্ট কমা (,) দিয়ে আলাদা করা হয়।

নোটঃ

আমরা চাইলে let বা const, দুইটা কিওয়ার্ড ব্যাবহার করেই অ্যারে ক্রিয়েট করতে পারি, কিন্তু অ্যারে ক্রিয়েট করার জন্য const কিওয়ার্ড ব্যাবহার করতে রেকমেন্ড করা হয়। কারণ অ্যারে তে আমরা অ্যারের নামটা চেঞ্জ করি না, এর ভিতরে থাকে ইলিমেন্টগুলোকে চেঞ্জ বা আপডেট করি।

Array Example:

const arrayName = ['Rohit', 'Virat', 'Shakib'];

জাভাস্ক্রিপ্টে অ্যারের ক্ষেত্রে Line Breaks এবং Space জিনিসটা গুরুত্বপূর্ণ না। আপনি মাল্টিপল লাইনেও ১টা অ্যারে কে স্প্যান করতে পারেন।

Example:

const arrayName = [
    'Rohit',
    'Virat',
    'Shakib'
];

Create an Array using Array Constructor (new keyword)

অ্যারে ক্রিয়েট করার জন্য বেশিরভাগ সময় আমরা Array Literal ব্যাবহার করলেও অনেক সময় আমাদের Array Constructor ব্যাবহার করা লাগতে পারে। Array Constructor ব্যাবহার করে অ্যারে ডিক্লেয়ার করার জন্য আমাদের নিচের সিনট্যাক্স ফলো করতে হবে-

Syntax:

const arrayName = new Array(item1, item2);

Array Literal ব্যাবহার করে আমরা যেইভাবে অ্যারে ডিক্লেয়ার করেছি, এইক্ষেত্রেও রুলস প্রায় একই।

কিন্তু Array Constructor এর ক্ষেত্রে আমাদের new কিওয়ার্ড ব্যাবহার করতে হবে -> তারপর Array লিখতে হবে -> এবং তারপর ফার্স্ট ব্র্যাকেট / () দিতে হবে, যেখানে অ্যারে ইলিমেন্ট গুলো থাকবে -> এবং সবশেষে সেমিকোলন দিয়ে স্টেটমেন্ট ক্লোজ করে দিতে হবে।

উপরে Array নামের প্রথম লেটার টা কিন্তু অবশ্যই ক্যাপিটাল লেটারে হবে। এইভাবে Constructor Pattern ব্যাবহার করে অ্যারে ডিক্লেয়ার করা আর Array Literal ব্যাবহার করে অ্যারে ডিক্লেয়ার করা একই কথা।

Array Constructor with Single Parameter

Array Literal Syntax ব্যাবহার করে যখন আমরা অ্যারে ডিক্লেয়ার করেছিলাম তখন আমরা যদি সেইটার ভিতরে মাত্র ১ টা ইলিমেন্ট স্টোর করতাম তখন কিন্তু সেইটাকে একটা ইলিমেন্ট হিসাবেই স্টোর করত এবং আমরা যদি সেইটার length property ব্যাবহার করে সেইটার length দেখতে চাইতাম তাহলে length এর আউটপুট 1 দেখাতো, কারন সেইখানে মাত্র 1 টা ইলিমেন্ট ই ছিলো।

Update Array Elements:

আমরা চাইলে অ্যারে ক্রিয়েট করার সময়েই ইলিমেন্ট গুলো প্রোভাইড করতে পারি অথবা আমরা চাইলে আগে একটা অ্যারে ক্রিয়েট করার পরেও সেইটাতে অ্যারে ইলিমেন্ট গুলো আপডেট করতে পারি। যেমন-

const students = [];
students[0] = 'Einstein';
students[1] = 'Newton';
console.log(students);
//[ 'Einstein', 'Newton' ]

উপরে আমরা ইনডেক্স নাম্বার বলে দিয়ে একটা ফাকা অ্যারেতে ইলিমেন্ট আপডেট করছি। এর জন্য প্রথমে অ্যারের নাম দিতে হবে -> তারপরে স্কয়ার ব্র্যাকেটের /[] ভিতরে ইনডেক্স নাম্বার বলে দিতে হবে -> তারপর ইক্যুয়াল সাইন দিয়ে ভ্যালু দিতে হবে -> এবং সবার শেষে সেমিকোলন দিয়ে শেষ করতে হবে।

নোটঃ জাভাস্ক্রিপ্টে অ্যারে হচ্ছে 0 ইনডেক্স বেসড। যেইটার অর্থ হচ্ছে অ্যারের ইনডেক্স নাম্বার সবসময় 0 থেকে শুরু হবে, এরপর পর্যায়ক্রমে 1, 2, 3 এইভাবে চলতে থাকবে।

কিন্তু আমরা যদি কোনো একটা ইনডেক্স নাম্বার ফাকা রেখেই অন্য ইনডেক্স গুলোতে ভ্যালু অ্যাসাইন করি? আর আউটপুট ই বা কি হবে? চলেন দেখা যাক -

const students = [];
students[0] = 'Einstein';
students[1] = 'Newton';
students[3] = 'Hawking';
console.log(students);
//[ 'Einstein', 'Newton', <1 empty item>, 'Hawking' ]

উপরে আমরা ২ নাম্বার অ্যারে ইনডেক্স টা ফাকা রেখেই বাকিগুলোতে ভ্যালু অ্যাসাইন করেছিলাম। এবং রেজাল্ট হিসাবে দেখেন Empty Item ই রিটার্ন করছে।

Accessing Array Element: