Data তুই পালাবি কোথায়
ডাটা একেক সময় একেক স্টাইলে আসবে। কখনো ভেরিয়েবল, কখনো অবজেক্ট, কখনো অ্যারে, কখনো অবজেক্টের মধ্যে অ্যারে, আবার কখনো অ্যারের মধ্যে অবজেক্ট, এমন অনেক অনেক সিস্টেমে ডাটা আসতে পারে। কোনো সিস্টেম থেকে কীভাবে ডাটা বের করে নিয়ে আসতে হবে, সেটা নিয়ে তোর কিছু ধারণা থাকার দরকার আছে।
Array of Objects
একটা অ্যারের মধ্যে যখন অনেকগুলা অবজেক্ট থাকে, তখন কোনো একটা অবজেক্ট থেকে কীভাবে ডাটা বের করবি। বিষয়টা খুবই সিম্পল। জাস্ট অ্যারে থেকে উপাদান কীভাবে নিবি, হয় লুপ করে একটা একটা করে উপাদান পাবি, তারপর সেগুলা দিয়ে কিছু করবি।
আর যদি কোনো একটা স্পেসিফিক আইটেম, সেটা হতে পারে প্রথম যে অবজেক্ট আছে, সেটার মধ্যে এড্রেস পেতে চাস, তাহলে অবজেক্ট যেহেতু অ্যারের মধ্যে আছে, তাই অ্যারের ইনডেক্স দিয়ে প্রথম উপদানটা এক্সেস করবি। তাই data[0] তোকে একটা অবজেক্ট দিবে। এরপর অবজেক্ট পেয়ে যাওয়ার পর ডট নোটেশন দিয়ে সেটার প্রোপার্টি এক্সেস করে ফেলবি। আর কিছু না।
const data = [{id: 1, name: 'abul', address: 'kochu khet'}, { }, { }, { }];
console.log(data[0]);
console.log(data[0].address);
Output:
{ id: 1, name: 'abul', address: 'kochu khet' }
kochu khetঅবজেক্টের মধ্যে অ্যারে
কিছু সময় দেখা যায়, একটা অবজেক্টের মধ্যে অনেকগুলা প্রোপার্টি দিয়ে দিছে, তার মধ্যে একটা প্রোপার্টি হয়তো data নামে আছে। তাই প্রথমে ডট নোটেশন দিয়ে সেই অ্যারেকে এক্সেস করে নিতে হবে। তারপর সেটা একটা অ্যারে হিসেবে পাবি। আর একবার অ্যারে পেয়ে গেলে ওপরের সিস্টেমে সেটার ইনডেক্স তোকে অবজেক্ট দিবে। ধর, তুই সেকেন্ড পজিশন বা 1 ইনডেক্সের অবজেক্টের দাম জানতে চাস, তাহলে ইনডেক্সের পর ডট নোটেশন দিয়ে প্রোপার্টি এক্সেস করে ফেলতে পারবি।
const products = {
count: 5000,
data: [
{ id: 1, name: 'lenovo laptop', price: 65000},
{ id: 2, name: 'macbook', price: 165000},
]
};
console.log(products.data[1].price);
Output: 165000মাল্টি লেভেল নেস্টেড অবজেক্ট
মাঝে মাঝে অবজেক্টের ভিতরে অবজেক্ট, তার ভিতরে অবজেক্ট, তার ভিতরে অবজেক্ট— এমন একটার পর একটা লেয়ার থাকে। এইগুলা একটু বুঝে বুঝে একটার পর একটা বের করতে হয়। বের করতে একটু উল্টাপাল্টা করলে এরর হয়ে যায়।
const user = {
id: 5001,
name: 'shoriful raj',
address: {
street: {
second: 'poribag er goli'
},
city: 'Dhaka'
}
};
console.log(user.address.street.second);
Output: poribag er goliএইভাবে একটার পর একটা প্রোপার্টি বা অনেক সময় একটার পর একটা মেথড কল করাকে চেইনিং বলে। কারণ, এইটা দেখতে অনেকটা চেইনের মতো।
Practice:
- তোর কাছে একটা array আছে [{id: 1, name: 'mukta', address: 'mirpur'}]। তুই address প্রিন্ট করতে চাস, তাহলে প্রোগ্রাম লিখে দেখ, কীভাবে address প্রিন্ট করতে হয়।
- একটা প্রোগ্রাম লিখ, যেখানে const library = { name: 'city library', books: [{ id: 1, title: 'JavaScript Basics', price: 300}, { id: 2, title: 'Python Essentials', price: 500}] } আছে। এবার books array থেকে দ্বিতীয় বইয়ের price বের কর।
- তোর কাছে const school = { name: 'Green High', students: [{ id: 1, name: 'Samiha'}, { id: 2, name: 'Kamal'}] } নামক একটি অবজেক্ট আছে। এবার students array থেকে প্রথম শিক্ষার্থীর name প্রিন্ট করতে তুই একটা প্রোগ্রাম লিখ।
- ধর, একটা অবজেক্ট আছে, const shop = { items: [{ name: 'pen', stock: 100}, { name: 'notebook', stock: 50 }] }। items array থেকে notebook-এর stock বের করতে চাস, তাহলে একটা প্রোগ্রাম লিখে বের কর।
- const movie = { title: 'Inception', director: { name: 'Nolan', age: 50 }, rating: 8.8 } নামক অবজেক্টে তুই director-এর name প্রিন্ট করতে চাস। কীভাবে করবি?
- একটা প্রোগ্রাম লিখ, যেখানে const game = { name: 'football', players: [{ id: 1, name: 'Lionel Messi'}, { id: 2, name: 'Cristiano Ronaldo'}] } অবজেক্টে প্রথম player-এর name প্রিন্ট করবে।
- ধর, const vehicle = { type: 'car', features: { color: 'red', brand: { name: 'Toyota', model: 'Corolla' } } }। brand-এর name প্রিন্ট করতে তুই একটা প্রোগ্রাম লিখ।