JavaScript-এ অ্যারে হলো একটি তালিকা-সদৃশ স্ট্রাকচার, যার নির্দিষ্ট দৈর্ঘ্য নেই এবং যা যেকোনো ধরনের প্রিমিটিভ বা অবজেক্ট ধারণ করতে পারে, এমনকি মিশ্র ধরনেরও।
এতে length প্রপার্টি ছাড়াও অ্যারে ট্রাভার্স ও মিউটেট করার জন্য অনেক দরকারি মেথড রয়েছে।
একটি অ্যারে তৈরি করতে, তৃতীয় বন্ধনী []-এর মধ্যে এলিমেন্ট যোগ করুন।
অ্যারে থেকে পড়তে, আইডেন্টিফায়ারের পরে তৃতীয় বন্ধনী []-এর মধ্যে ইনডেক্সটি বসান। অ্যারের ইনডেক্স শুরু হয় শূন্য থেকে।
উদাহরণস্বরূপ:
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names[1];
// => Laura
কনস্ট্রাক্টর সিনট্যাক্স ব্যবহার করেও অ্যারে তৈরি করা যায়, তবে বেশিরভাগ ক্ষেত্রে অ্যারে লিটারাল সিনট্যাক্সই ব্যবহার করার পরামর্শ দেওয়া হয়।
const names = new Array();
names.push('Jack', 'Laura', 'Paul', 'Megan');
names[1];
// => Laura
অ্যারে এলিমেন্টের ইনডেক্স হিসেবে strings ব্যবহার করতে পারে না, বরং ইন্টিজার (number) ব্যবহার করতে হয়।
বন্ধনী নোটেশন (বা ডট নোটেশন) ব্যবহার করে অ-ইন্টিজার দিয়ে সেট বা অ্যাক্সেস করলে অ্যারে তালিকার নিজের কোনো এলিমেন্ট সেট বা পাওয়া যাবে না, বরং ওই অ্যারের অবজেক্ট প্রপার্টি সংগ্রহের সঙ্গে যুক্ত একটি ভ্যারিয়েবল সেট বা অ্যাক্সেস করা হবে।
অ্যারের অবজেক্ট প্রপার্টি এবং অ্যারে এলিমেন্টের তালিকা আলাদা, আর অ্যারের ট্রাভার্স ও মিউটেশন অপারেশন এই নামযুক্ত প্রপার্টিগুলোর উপর প্রয়োগ করা যায় না।
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.length;
// => 4
// Properties can be set on arrays using bracket ['property'] or
// dot .property notation, and this will affect the length, as
// shown below.
names.magician = 'Elyse';
names.length;
// => 4
// The property shows up when logging the array, making it seem
// that the property is somehow incorporated in the array.
names;
// => ["Jack", "Laura", "Paul", "Megan", magician: "Elyse"]
// However, be aware. Properties added via non-numeric keys are
// NOT part of the array's internal list, and are not traversed
// or mutated when using one of the traversal or mutation
// operations.
names.forEach((name) => console.log(name));
// => Jack
// => Laura
// => Paul
// => Megan
JavaScript-এ অ্যারে হলো সাধারণ objects, আর delete কিওয়ার্ড ব্যবহার করে আইটেম মুছে ফেলা যায়।
তবে এতে অ্যারের length বদলায় না, বরং একটি empty ফাঁক রেখে যায়।
অন্য ভাষায় এটি স্পার্স অ্যারের মতো।
ট্রাভার্স বা মিউটেশন অপারেশন ব্যবহারের সময় empty ফাঁকগুলো এড়িয়ে যাওয়া হয়।
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
delete names[1];
names;
// => ["Jack", empty, "Paul", "Megan"]
names.length;
// => 4
names.forEach((name) => console.log(name));
// => Jack
// => Paul
// => Megan
যদি কোনো ফাঁক না থাকা উচিত হয়, আর length যদি এমন আইটেমের সংখ্যা প্রতিফলিত করে যেগুলো ট্রাভার্স বা মিউটেট করা হবে, তাহলে বদলে splice ব্যবহার করুন।
splice() মেথড বিদ্যমান এলিমেন্ট সরিয়ে বা বদলে এবং/অথবা নতুন এলিমেন্ট জায়গায় যোগ করে একটি অ্যারের বিষয়বস্তু বদলে দেয়।1
উদাহরণস্বরূপ:
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.splice(1, 1);
names;
// => ["Jack", "Paul", "Megan"]
names.length;
// => 3
names.forEach((name) => console.log(name));
// => Jack
// => Paul
// => Megan
অ্যারের length প্রপার্টি অ্যারেটি যে আইটেম ধারণ করে সেই তালিকার সঙ্গে যুক্ত।
এটি মিউটেট করা যায়।
দৈর্ঘ্য বাড়ালে empty ফাঁক তৈরি হয়, যেগুলো অ্যারে ট্রাভার্স বা মিউটেট করার সময় বিবেচনা করা হয় না।
দৈর্ঘ্য কমালে অ্যারের শেষের এলিমেন্টগুলো মুছে ফেলা হয়।
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.length = 6;
names;
// => ["Jack", "Laura", "Paul", "Megan", empty × 2]
names.length = 2;
// => ["Jack", "Laura"]
যেহেতু অ্যারে হলো objects, তাই typeof names দেয় "object"।
কোনো কিছু অ্যারে কি না তা যাচাই করতে Array.isArray ব্যবহার করুন:
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
typeof names;
// => "object"
Array.isArray(names);
// => true
const object = {};
Array.isArray(object);
// => false
আপনার names instanceof Array ব্যবহার করার ইচ্ছা হতে পারে, আর তা কাজও করতে পারে, তবে সব পরিস্থিতিতে নয়।
আরও জানতে এই নিবন্ধটি পড়ুন।
প্রতিটি Array অবজেক্টে যে মেথডগুলো পাওয়া যায়, তার কিছু অ্যারে থেকে যোগ বা সরাতে ব্যবহার করা যায়। এখানে সেগুলোর কয়েকটি আছে:
push()মেথড একটি অ্যারের শেষে এক বা একাধিক এলিমেন্ট যোগ করে এবং অ্যারের নতুন দৈর্ঘ্য রিটার্ন করে।2
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.push('Jill'); // => 5
names;
// => ['Jack', 'Laura', 'Paul', 'Megan', 'Jill']
pop()মেথড একটি অ্যারের শেষ এলিমেন্ট সরিয়ে ফেলে এবং সেই এলিমেন্ট রিটার্ন করে। এই মেথডটি অ্যারের দৈর্ঘ্য বদলে দেয়।3
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.pop(); // => 'Megan'
names;
// => ['Jack', 'Laura', 'Paul']
shift()মেথড একটি অ্যারের প্রথম এলিমেন্ট সরিয়ে ফেলে এবং সরানো সেই এলিমেন্ট রিটার্ন করে। এই মেথডটি অ্যারের দৈর্ঘ্য বদলে দেয়।4
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.shift(); // => 'Jack'
names;
// => ['Laura', 'Paul', 'Megan']
unshift() মেথড একটি অ্যারের শুরুতে এক বা একাধিক এলিমেন্ট যোগ করে এবং অ্যারের নতুন দৈর্ঘ্য রিটার্ন করে।5
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.unshift('Jill'); // => 5
names;
// => ['Jill', 'Jack', 'Laura', 'Paul', 'Megan']
splice() মেথড বিদ্যমান এলিমেন্ট সরিয়ে বা বদলে এবং/অথবা নতুন এলিমেন্ট জায়গায় যোগ করে একটি অ্যারের বিষয়বস্তু বদলে দেয়। এই মেথডটি মুছে ফেলা এলিমেন্ট ধারণ করা একটি অ্যারে রিটার্ন করে।1
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.splice(2, 1, 'Jill'); // => ['Paul']
names;
// => ['Jack', 'Laura', 'Jill', 'Megan']
splice, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice (২৯ সেপ্টেম্বর, ২০২১-এ নেওয়া) ↩
push, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push (২৯ সেপ্টেম্বর, ২০২১-এ নেওয়া) ↩
pop, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop (২৯ সেপ্টেম্বর, ২০২১-এ নেওয়া) ↩
shift, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift (২৯ সেপ্টেম্বর, ২০২১-এ নেওয়া) ↩
unshift, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift (২৯ সেপ্টেম্বর, ২০২১-এ নেওয়া) ↩