Arrays ও Objects
- array তৈরি করে index দিয়ে মান পড়তে ও length ব্যবহার করতে পারবেন
- object-এর key দিয়ে মান পড়তে-লিখতে পারবেন
- object-এর array দিয়ে ডেটাসেট সাজাতে এবং reference ফাঁদ এড়াতে পারবেন
সমস্যাটা কী?
দোকানে ৩টি পণ্য। কোডে লেখা আছে name1, price1, stock1, name2, price2, …—নয়টি আলাদা variable। নতুন পণ্য এলে আরও তিনটি variable, আর “সব পণ্যের দাম ১০% বাড়াও” করতে প্রতিটি আলাদা করে লিখতে হয়। এভাবে ৫০০ পণ্য সামলানো অসম্ভব।
শেখার লক্ষ্য
- array তৈরি করে index দিয়ে মান পড়তে ও length ব্যবহার করতে পারবেন
- object-এর key দিয়ে মান পড়তে-লিখতে পারবেন
- object-এর array দিয়ে ডেটাসেট সাজাতে এবং reference ফাঁদ এড়াতে পারবেন
পূর্বশর্ত
ব্যাখ্যা
অ্যারে (array): বর্গাকার বন্ধনীতে ক্রমানুসারে মান। প্রথম উপাদানের index ০, দ্বিতীয়টির ১। .length মোট উপাদান সংখ্যা।
const prices = [450, 1200, 90];
console.log(prices[0]); // 450 (প্রথম)
console.log(prices.length); // 3
console.log(prices[prices.length - 1]); // 90 (শেষ)
prices.push(300); // শেষে যোগ → [450, 1200, 90, 300]অবজেক্ট (object): কোঁকড়া বন্ধনীতে key: value জোড়া। index-এর বদলে নাম দিয়ে পড়ি।
const shirt = { name: "সুতি শার্ট", price: 450, inStock: true };
console.log(shirt.name); // ডট দিয়ে
console.log(shirt["price"]); // বন্ধনী দিয়ে (key যদি variable-এ থাকে)
shirt.price = 500; // মান বদল (const হলেও ভেতরের ঘর বদলানো যায়)দুটো একসাথে: ডেটাসেট সাধারণত object-এর array—প্রতিটি সারি একটি object, প্রতিটি কলাম একটি key। অধ্যায় ১-এর feature/label টেবিল ঠিক এভাবেই কোডে আসে।
Reference ফাঁদ: const b = a; লিখলে b নতুন কপি নয়, একই object-এর আরেকটি নাম। b বদলালে a-ও বদলায়। আলাদা কপি চাইলে const b = { ...a }; (spread syntax—a-এর সব key নতুন object-এ ছড়িয়ে দেয়)।
উপমা — এবং কোথায় ভাঙে
উপমা: Array হলো নম্বর দেওয়া লকারের সারি (০, ১, ২…); object হলো একটি ফর্ম যার প্রতিটি ঘরে নাম লেখা (নাম, দাম, স্টক)।
কোথায় ভাঙে: বাস্তব লকারের নম্বর ১ থেকে শুরু হয়; JavaScript-এ ০ থেকে—এটিই সবচেয়ে সাধারণ “off-by-one” ভুলের উৎস। আর ফর্মের ফটোকপি আলাদা কাগজ, কিন্তু object “কপি” (b = a) একই কাগজ।
ধাপে ধাপে উদাহরণ
৩টি পণ্যের ক্যাটালগ বানিয়ে দ্বিতীয় পণ্যের দাম পড়ি এবং স্টক বদলাই:
const products = [
{ id: "p1", name: "সুতি শার্ট", price: 450, stock: 12 },
{ id: "p2", name: "চামড়ার ব্যাগ", price: 1200, stock: 0 },
{ id: "p3", name: "মগ", price: 90, stock: 40 },
];
console.log(products[1].name, products[1].price); // দ্বিতীয় পণ্য = index 1
products[2].stock = products[2].stock - 1; // একটি মগ বিক্রি
console.log(products[2].stock);চামড়ার ব্যাগ 1200 39
products[1] একটি object দেয়, তারপর .name সেই object-এর ঘর। এভাবে বাম থেকে ডানে পড়ুন: “products-এর ১ নম্বর, তার name”।
অনুশীলন / অ্যাক্টিভিটি
console.log আউটপুট দেখায়। ব্রাউজারের DOM, নেটওয়ার্ক (fetch), টাইমার বা ফাইল এখানে নেই—ইচ্ছাকৃতভাবে। Ctrl/⌘ + Enter চাপলেও Run হয়।ক্যাটালগ ও reference ফাঁদ
const products = [
{ id: "p1", name: "সুতি শার্ট", price: 450, stock: 12 },
{ id: "p2", name: "চামড়ার ব্যাগ", price: 1200, stock: 0 },
{ id: "p3", name: "মগ", price: 90, stock: 40 },
];
// ১) শেষ পণ্যের নাম দেখান (length ব্যবহার করে)
console.log("শেষ পণ্য:", products[products.length - 1].name);
// ২) নতুন পণ্য যোগ করুন
products.push({ id: "p4", name: "ছাতা", price: 350, stock: 7 });
console.log("মোট পণ্য:", products.length);
// ৩) ফাঁদ: অফার কপি বানাতে গিয়ে আসল দাম বদলে গেল?
const original = products[0];
const offer = original; // এটা কি কপি?
offer.price = 400;
console.log("আসল দাম:", original.price, "অফার দাম:", offer.price);লাইন ধরে বুঝি
products.length - 1: শেষ index। ৩টি উপাদান থাকলে index ০, ১, ২—শেষটি ২ = ৩ − ১।products.push({...}): array-এর শেষে নতুন object যোগ করে; length এক বাড়ে।const offer = original: নতুন object তৈরি হয় না, শুধু নতুন নাম।{ ...original }: original-এর সব key/value নিয়ে নতুন object। (সতর্কতা: এটি “shallow” কপি—ভেতরে আরেকটি object থাকলে সেটি শেয়ার থাকে।)Object.keys(offer): object-এর সব key-এর array।
এখানে এটা কেন ব্যবহার করেছি?
object-এর array হলো ডেটাসেটের স্বাভাবিক রূপ। অধ্যায় ৪-এ classifier-এর training ডেটা, অধ্যায় ১২-এ RAG-এর ডকুমেন্ট—সব এই কাঠামোয় থাকবে। reference ফাঁদ বুঝলে “ডেটা কোথায় যেন নিজে থেকে বদলে গেল” বাগ এড়ানো যায়।
কোন বিষয়গুলো মনে রাখব?
- array index ০ থেকে; শেষ = length − 1
- object key দিয়ে পড়া: obj.key বা obj["key"]
- b = a কপি নয়; { ...a } দিয়ে কপি
- ডেটাসেট = object-এর array
এখনই কোনগুলো মুখস্থ করতে হবে না?
- deep copy-র কৌশল (structuredClone)
- Map ও Set
- array-এর সব method—দরকারি গুলো পরের পাঠে
নিজে পরিবর্তন করে দেখুন
products[10] চালিয়ে দেখুন কী আসে (এরর নাকি undefined?)। তারপর products[10].name চালান। দুটো ফলের পার্থক্য কী এবং কেন?
সাধারণ ভুল
- প্রথম উপাদানকে index ১ ভাবা
- নেই এমন index/key পড়লে undefined আসে—তার ওপর .name চাইলে TypeError
- const array-এ push করা যায় না ভাবা—const শুধু নাম পুনঃনির্ধারণ আটকায়, ভেতরের পরিবর্তন নয়
জ্ঞান যাচাই
নিচের 3টি প্রশ্নের উত্তর দিয়ে “জমা দিন” চাপুন। স্কোর সার্ভারে যাচাই হয়; প্রতিটি উত্তরের পর কেন সঠিক বা ভুল তা দেখাবে। লগইন থাকলে ফল আপনার অগ্রগতিতে সংরক্ষিত হয়।
সংক্ষেপে মনে রাখুন
- array = ক্রম, object = নাম-দেওয়া ঘর
- index ০ থেকে
- reference বনাম copy আলাদা
পরবর্তী পাঠ
একই কাজ বারবার না লিখতে লাগবে function, আর সিদ্ধান্ত নিতে শর্ত: Functions ও Conditions
সূত্র ও যাচাই
জ্ঞান যাচাই
আপনার শেখার অগ্রগতি সংরক্ষণ করতে লগইন করুন।
এখানে প্রশ্ন করুন
আপনার শেখার অগ্রগতি সংরক্ষণ করতে লগইন করুন।