2.16 অ্যারে এবং অ্যারে মেথডস

 

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

let arr = [true, 'hello', 7, [11, 22, 33], {value: 22}];
console.log(arr); // [true,"hello",7,[11, 22, 33],{value: 22}]

আমরা চাইলে একই সাথে একটি অ্যারের মধ্যে boolean, string, number, array, object ইত্যাদি টাইপের উপাদান রাখতে পারি। যাইহোক, আমাদের আজকের মূল আলোচনার বিষয় কিন্তু এটা না। আমরা আজকে দেখবো জাভাস্ক্রীপ্টে Array জিনিসটা কি এবং এটাকে কাজে লাগিয়ে আমরা কি কি কাজ করতে পারি।

জাভাস্ক্রীপ্টে Array হলো একটি গ্লোবাল অবজেক্ট যেটা দিয়ে আমরা অ্যারে ডিক্লেয়ার করতে পারি অর্থাৎ Array অবজেক্টের নিজস্ব constructor রয়েছে। আর তাই আমরা কোন অ্যারে কে let arr = new Array() এভাবে ডিক্লেয়ার করতেও পারি তবে সেটা করা ইফিশিয়েন্ট না, তাই এভাবে অ্যারে কে ডিক্লেয়ার করা থেকে বিরত থাকবো, যদি নিতান্তই ব্যবহার করা লাগে সেক্ষেত্রে ব্যবহার করবো। Array অবজেক্টের স্ট্যাটিক কোন প্রোপার্টি নাই তবে এর দুটি প্রোটোটিপিক্যাল প্রোপার্টি আছে, এগুলা নিয়ে আলোচনা করবো না। আমরা আলোচনা করবো Array অবজেক্টের মেথডগুলো নিয়ে। চলুন ছোট ছোট করে দেখে নেওয়া যাক মেথডগুলোকে।

Array.from() – এটি Array অবজেক্টের একটি স্ট্যাটিক মেথড যেটি মূলত iterable বা পুনরাবৃত্তিযোগ্য কোন ভেরিয়েবল থেকে নতুন একটি অ্যারে তৈরীতে ব্যবহৃত হয়। এছাড়াও এটা দিয়ে আরো কিছু কাজ করা যায়, সেটা আমরা নীচের ছোট্ট একটা উদাহরণের মাধ্যমে দেখবো।

let str = "Vivasoft";
let arr = [1, 2, 3];
console.log(Array.from(str)); // ["V", "i", "v", "a", "s", "o", "f", "t"];
console.log(Array.from(arr, x => x * x)); // [1, 4, 9]

আমরা জানি একটা স্ট্রিং কে str[0], str[1] এভাবে ইনডেক্স অনুযায়ী এক্সেস করা যায়, আর তাই এটি একটি পুনরাবৃত্তিযোগ্য ভেরিয়েবল এবং সেই অনুযায়ী Array.from() মেথডটি এটিকে একটি নতুন অ্যারেতে রূপান্তরিত করেছে। উপরের কোডটি বুঝতে অসুবিধা হলে কমেন্টের মাধ্যমে জানাতে পারেন।

Array.isArray() – মেথডের নাম দেখেই বোঝা যাচ্ছে যে এটার রিটার্ন ভ্যালু কি ধরনের হতে পারে। আমরা পূর্বে দেখেছি যে, কোন মেথডের পূর্বে যদি is লেখা থাকে তাহলে সেটি boolean টাইপের ডাটা (true/false) রিটার্ন করে। এই মেথডের আর্গুমেন্ট হিসেবে যে ভ্যালু দেওয়া হচ্ছে সেটা অ্যারে কিনা যাচাই করা এই মেথডের কাজ। নীচের কোড লক্ষ্য করিঃ

console.log(Array.isArray()); // false
console.log(Array.isArray({})); // false
console.log(Array.isArray([])); // true
console.log(Array.isArray(null)); // false
console.log(Array.isArray(undefined)); // false
console.log(Array.isArray(true)); // false
console.log(Array.isArray(17)); // false
console.log(Array.isArray('Array')); // false
console.log(Array.isArray(new Array())); // true

Array.prototype.at() – এই মেথডের কাজ হলো কোন ইডেক্স অনুযায়ী একটি অ্যারে থেকে তার মান রিটার্ন করা। ধরুন আমাদের কাছে একটি অ্যারে আছে, let arr = [1,2,3,4]; এখানে arr.at(1) আমাদেরকে 2 রিটার্ন করবে, মানটি আমরা arr[1] এভাবেও পেতে পারি। তাহলে at() মেথড কেন ব্যবহার করবো?? at() মেথডের মজার একটি ব্যাপার হচ্ছে এটি নেগেটিভ ইনডেক্স অনুযায়ী কাজ করতে পারে তবে সেটা উল্টো দিক থেকে অর্থাৎ আপনি যদি ইনডেক্স হিসেবে -1 ব্যবহার করেন তবে সে আপনাকে অ্যারেটির সবথেকে শেষের ভ্যালু রিটার্ন করবে, -2 ব্যবহার করলে শেষের আগের ভ্যালু রিটার্ন করবে। চলুন নীচের চিত্রটি এবং কোড দেখে সেটা বোঝার চেষ্টা করি।

ধনাত্নক ইনডেক্স 0 1 2 3
অ্যারে (arr) 1 2 3 4
ঋণাত্নক ইনডেক্স -4 -3 -2 -1

 

let arr = [92,46,71,87,39];
console.log(arr.at(0)); // 92
console.log(arr.at(-1)); // 39
console.log(arr[-1]); // undefined

Array.prototype.concat() –  দরকারি মেথডগুলোর মধ্যে concat() মেথড একটি। concat কথাটি concatenation এর সর্ট ফর্ম। এই মেথডটি দুটি অ্যারেকে জোড়া লাগিয়ে একটি অ্যারেতে পরিণত করে এবং সেটাকে রিটার্ন করে। কোডের মাধ্যমে বিষয়টি বুঝে নিইঃ

let arr1 = [92,46,[71,55,20]];
let arr2 = [18,24,60];
let finalArray = arr1.concat(arr2);
console.log(finalArray); // [92,46,[71,55,20],18,24,60]

Array.prototype.every() – এই মেথডটি একটি অ্যারের প্রত্যেকটি ভ্যালুকে একটি কন্ডিশন অনুযায়ী চেক করে এবং কন্ডিশনটি যদি সবার ক্ষেত্রে সত্য হয় তাহলে সে true রিটার্ন করে আর কোন এক জনের জন্য কন্ডিশনটি মিথ্যা হলে সে false রিটার্ন করে। বিষয়টি একটি ছোট্ট উদাহরণের মাধ্যমে দেখে নিই। মনে করুন আমাদের কাছে একটি অ্যারে আছে আর সেই অ্যারের প্রত্যেকটি উপাদান বিজোড় কিনা আমরা সেটা যাচাই করবো every() মেথড দিয়ে।

const isEven = (num) => num % 2;
let arr = [29,13,71,30,55];
console.log(arr.every(isEven)); // false

Array.prototype.fill() – অ্যারের ক্ষেত্রে বহুল ব্যবহৃত মেথড গুলির মধ্যে fill() মেথড একটি। এই মেথডটির মাধ্যমে আমরা কোন অ্যারের সবগুলো উপাদান বা একটি নির্দিষ্ট রেঞ্জের মধ্যে উপাদান গুলোকে একটি ভ্যালু দ্বারা এ্যাসাইন করে থাকি। এটি মূলত fill(value, from, to) এভাবে কল করা হয়। আমরা যদি শুধুমাত্র value কে দিই তাহলে মেথডটি অ্যারটির সব উপাদানগুলো value তে পরিণত করে দিবে, আর যদি শুধুমাত্র value ও from কে দিই তাহলে মেথডটি from ইনডেক্স থেকে শেষ পর্যন্ত সকল উপাদানকে value তে পরিণত করে দিবে, আর যদি value, from ও to কে দিই তাহলে মেথডটি from ইনডেক্স থেকে শুরু করে to ইনডেক্স এর আগ পর্যন্ত সকল উপাদানকে value তে পরিণত করে দিবে।

let arr = [29,13,71,30,55];
arr.fill(3);
console.log(arr); // [3,3,3,3,3]
arr.fill(4,2);
console.log(arr); // [3,3,4,4,4]
arr.fill(5,3,4);
console.log(arr); // [3,3,4,5,4]

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

 

 
উদাহরন
  • toString() মেথড ব্যবহার করে একটি এ্যারের এর ভ্যালুকে স্ট্রিং আকারে প্রিন্ট করা যায়। 
const arr = ["JS", "React", "Next", "Node"];
console.log(arr.toString())

Output:

JS,React,Next,Node

  • pop() মেথড ব্যবহার করে একটি এ্যারের এর সর্বশেষ ভ্যালু কে রিমুভ করা হয়।
const arr= ["JS", "React", "Next", "Node"];
fruits.pop();

Output:

["JS", "React", "Next"]

  • push() মেথড ব্যবহার করে একটি এ্যারের এর শেষে ভ্যালু যোগ করা হয়।
const arr= ["JS", "React", "Next", "Node"];
arr.push("Angular");

Output

["JS", "React", "Next", "Node", "Angular"]
  • concat() মেথড ব্যবহার করে দুটি এ্যারে কে যোগ করা হয়। 
const frontEnd = ["JS", "React", "Next"]; 
const backEnd= ["PHP", "Python", "Java"];
const fullStack= frontEnd.concat(backEnd);

Output

["JS", "React", "Next", "PHP", "Python", "Java"]

 

এসো নিজে করি
  • এ্যারের মেথড ব্যবহার করে একটি এ্যারে কে সর্ট করুন।
  • এ্যারের মেথড ব্যবহার করে একটি এ্যারে কে রিভার্স সর্ট করুন।
  • এ্যারের মেথড ব্যবহার করে একটি স্ট্রিং কে এ্যারে তে রুপান্ত করুন।
  • Returns array by filling elements with given value
  • Returns first element that satisfies a condition