Lesson ৭ মিনিট পড়া

অ্যারে (Arrays)

আপনার ডেটাগুলোকে লাইনে দাঁড় করানোর সবচেয়ে প্রিয় উপায় — ক্রমানুসারে সাজানো, ইনডেক্স করা এবং ব্যবহারের জন্য প্রস্তুত

অ্যারে কী? (What's an Array?)

অ্যারেকে অনেকটা সারি করে রাখা লকারের মতো চিন্তা করতে পারেন। প্রতিটি লকারের একটি নম্বর থাকে (০ থেকে শুরু), এবং প্রতিটিতে একটি করে ভ্যালু বা মান রাখা যায়। নম্বর ব্যবহার করে আপনি যেকোনো লকার খুলতে পারেন, শেষে নতুন লকার যোগ করতে পারেন, শুরু থেকে কোনো লকার সরিয়ে ফেলতে পারেন, অথবা নিজের ইচ্ছেমতো সেগুলোকে আবার সাজাতে পারেন।

জাভাস্ক্রিপ্টে সবচেয়ে বেশি ব্যবহৃত ডেটা স্ট্রাকচারগুলোর (data structure) মধ্যে অ্যারে অন্যতম। এগুলো অর্ডারড (ordered) বা ক্রমানুসারে সাজানো থাকে (এখানে পজিশন বা অবস্থান খুবই গুরুত্বপূর্ণ) এবং এতে যেকোনো টাইপের মিশ্রণ রাখা যায় — সংখ্যা, স্ট্রিং, অবজেক্ট, এমনকি অন্য কোনো অ্যারেও।

অ্যারে তৈরি এবং অ্যাক্সেস করা (Creating & Accessing Arrays)

// Creating arrays
let fruits = ["আম", "জাম", "কাঁঠাল"];
let mixed = [42, "hello", true, null, [1, 2, 3]];
let empty = [];
// Accessing by index (starts at 0!)
console.log(fruits[0]); // "আম"
console.log(fruits[2]); // "কাঁঠাল"
console.log(fruits[99]); // undefined (no error, just undefined)
// .at() supports negative indexes
console.log(fruits.at(-1)); // "কাঁঠাল" (last item)
console.log(fruits.at(-2)); // "জাম" (second to last)
// .length — how many items
console.log(fruits.length); // 3
// Changing a value
fruits[1] = "blueberry";
console.log(fruits); // ["আম", "blueberry", "কাঁঠাল"]
Output
আম
cherry
undefined
cherry
banana
3
["আম", "blueberry", "কাঁঠাল"]

আইটেম যোগ করা এবং বাদ দেওয়া (Adding & Removing Items)

অ্যারের দুই দিক থেকে আইটেম যোগ করা বা বাদ দেওয়ার জন্য এতে কিছু বিল্ট-ইন (built-in) মেথড আছে। এটিকে অনেকটা থিম পার্কের লাইনের মতো চিন্তা করুন:

  • .push(item) — লাইনের একদম শেষে যোগ করে
  • .pop() — লাইনের একদম শেষ থেকে বাদ দেয়
  • .unshift(item) — লাইনের সবার সামনে যোগ করে
  • .shift() — লাইনের সবার সামনে থেকে বাদ দেয়
  • .splice(index, count, ...newItems) — সুইস আর্মি নাইফ (Swiss Army knife)-এর মতো: যেকোনো জায়গায় আইটেম যোগ করতে, সরাতে বা প্রতিস্থাপন বা রিপ্লেস (replace) করতে পারে

push এবং pop খুব দ্রুত কাজ করে (এরা কেবল শেয়র দিকটায় কাজ করে)। unshift এবং shift তুলনামূলক ধীর, কারণ এক্ষেত্রে অন্য প্রতিটি আইটেমকে নিজের জায়গা থেকে এক ধাপ সরে যেতে হয়।

Push, Pop, Shift, Unshift ও Splice

let queue = ["Anika", "Rafi"];
// push — add to end
queue.push("Sadia");
console.log(queue); // ["Anika", "Rafi", "Sadia"]
// pop — remove from end
let last = queue.pop();
console.log(last); // "Sadia"
console.log(queue); // ["Anika", "Rafi"]
// unshift — add to front
queue.unshift("Zara");
console.log(queue); // ["Zara", "Anika", "Rafi"]
// shift — remove from front
let first = queue.shift();
console.log(first); // "Zara"
console.log(queue); // ["Anika", "Rafi"]
// splice — insert at index 1, remove 0 items, add "Esha"
queue.splice(1, 0, "Esha");
console.log(queue); // ["Anika", "Esha", "Rafi"]
// splice — remove 1 item at index 1
queue.splice(1, 1);
console.log(queue); // ["Anika", "Rafi"]
Output
["Anika", "Rafi", "Sadia"]
Charlie
["Anika", "Rafi"]
["Zara", "Anika", "Rafi"]
Zara
["Anika", "Rafi"]
["Anika", "Esha", "Rafi"]
["Anika", "Rafi"]

স্প্রেড অপারেটর এবং ডিস্ট্রাকচারিং (Spread Operator & Destructuring)

স্প্রেড অপারেটর (spread operator) (...) অনেকটা টেবিলের ওপর এক বাক্স লেগো বা খেলার ব্লক ঢেলে দেওয়ার মতো — এটি অ্যারে থেকে সবগুলো আইটেম বের করে এনে সেগুলোকে আলাদাভাবে ছড়িয়ে দেয়। অ্যারের কপি বা অনুলিপি তৈরি করতে, একাধিক অ্যারেকে একসাথে মেলাতে (merge), অথবা আর্গুমেন্ট হিসেবে আইটেম পাস করতে এটি ভীষণ কার্যকরী।

ডিস্ট্রাকচারিং (Destructuring) আপনাকে এক লাইনের কোড ব্যবহার করেই অ্যারে থেকে ভ্যালুগুলো বের করে এনে নিজেদের ইচ্ছেমতো নাম দেওয়া ভ্যারিয়েবলে (variable) আনপ্যাক করার (unpack) সুযোগ দেয়। arr[0] বা arr[1] লেখার বদলে, আপনি সরাসরি তাদের পজিশন ধরে ভ্যালুগুলো বের করে আনতে পারেন।

স্প্রেড ও ডিস্ট্রাকচারিং (Spread & Destructuring)

// Spread — copy an array (not a reference!)
let original = [1, 2, 3];
let copy = [...original];
copy.push(4);
console.log(original); // [1, 2, 3] (unchanged!)
console.log(copy); // [1, 2, 3, 4]
// Spread — merge arrays
let front = ["a", "b"];
let back = ["c", "d"];
let all = [...front, "MIDDLE", ...back];
console.log(all); // ["a", "b", "MIDDLE", "c", "d"]
// Destructuring — unpack by position
let [first, second, third] = ["gold", "silver", "bronze"];
console.log(first); // "gold"
console.log(second); // "silver"
// Skip items with commas
let [, , winner] = [10, 20, 30];
console.log(winner); // 30
// Rest pattern — grab the remaining items
let [head, ...tail] = [1, 2, 3, 4, 5];
console.log(head); // 1
console.log(tail); // [2, 3, 4, 5]
Output
[1, 2, 3]
[1, 2, 3, 4]
["a", "b", "MIDDLE", "c", "d"]
gold
silver
30
1
[2, 3, 4, 5]
Note: কখনোই = ব্যবহার করে কোনো অ্যারে কপি করবেন না (যেমন let b = a)। এটি একটি রেফারেন্স বা সংযোগ তৈরি করে — অর্থাৎ দুটো ভ্যারিয়েবলই একই অ্যারেকে নির্দেশ করে, তাই একটিতে পরিবর্তন আনলে অন্যটিও পরিবর্তন হয়ে যায়! আসল কপি বা অনুলিপি তৈরি করতে সবসময় [...a] বা a.slice() ব্যবহার করুন। = কে গুগল ডক বা Google Doc শেয়ার করার সাথে তুলনা করতে পারেন, আর [...a] হলো আপনার নিজের কপি ডাউনলোড করার মতো।
চ্যালেঞ্জ

ছোট কুইজ

[1, 2, 3].at(-1) কী রিটার্ন করবে?

পড়া চালিয়ে যান

LoopsObjects