_.map এবং _.collect দিয়ে ডেটা ম্যানিপুলেশন

Collection Functions - আন্ডারস্কোর.জেএস (underscorejs) - Web Development

278

_.map এবং _.collect এর ভূমিকা

Underscore.js-এ _.map এবং _.collect ফাংশন দুটি অত্যন্ত গুরুত্বপূর্ণ এবং জনপ্রিয় ফাংশন, যেগুলি ডেটা ম্যানিপুলেশন বা পরিবর্তন করার জন্য ব্যবহৃত হয়। এই ফাংশনগুলোর মাধ্যমে আপনি একটি অ্যারে বা অবজেক্টের প্রতিটি উপাদানকে একটি নির্দিষ্ট ফাংশন প্রয়োগ করে পরিবর্তন করতে পারেন। যদিও _.map এবং _.collect একে অপরের সমতুল্য (এবং _.collect মূলত _.map এর সমার্থক), তবে এগুলোর ব্যবহারের মাধ্যমে ডেটা পরিবর্তন এবং প্রক্রিয়াকরণের কাজটি সহজ হয়।

_.map ফাংশন

_.map হল একটি লুপিং ফাংশন যা একটি অ্যারে বা অবজেক্টের প্রতিটি উপাদানে একটি ফাংশন প্রয়োগ করে এবং সেই পরিবর্তিত মানগুলির একটি নতুন অ্যারে ফেরত দেয়। এটি JavaScript এর map() ফাংশনের মতো কাজ করে।

বৈশিষ্ট্য:

  • এটি একটি অ্যারে বা অবজেক্টের প্রতিটি উপাদান বা প্রপার্টিতে নির্দিষ্ট একটি ফাংশন প্রয়োগ করে।
  • এটি একটি নতুন অ্যারে তৈরি করে যা পরিবর্তিত উপাদানগুলো ধারণ করে।

উদাহরণ:

// অ্যারে ডেটার উপর map প্রয়োগ করা
let numbers = [1, 2, 3, 4, 5];
let squaredNumbers = _.map(numbers, function(num) {
    return num * num;
});

console.log(squaredNumbers); // [1, 4, 9, 16, 25]

এখানে, _.map ফাংশনটি numbers অ্যারের প্রতিটি উপাদানে একটি ফাংশন প্রয়োগ করেছে, যা প্রতিটি সংখ্যাকে বর্গমূল (square) করছে এবং নতুন অ্যারে তৈরি করছে।

অবজেক্টের সাথে ব্যবহার:

let users = [
    { name: "John", age: 28 },
    { name: "Jane", age: 32 },
    { name: "Doe", age: 22 }
];

let userNames = _.map(users, function(user) {
    return user.name;
});

console.log(userNames); // ["John", "Jane", "Doe"]

এখানে, _.map ফাংশনটি users অবজেক্টের প্রতিটি উপাদানের মধ্যে name প্রপার্টি বের করে একটি নতুন অ্যারে তৈরি করছে।


_.collect ফাংশন

Underscore.js-এ _.collect মূলত _.map এর সমতুল্য ফাংশন। তবে, এর ব্যবহারেও একই ধারণা আছে—অর্থাৎ, এটি একটি অ্যারে বা অবজেক্টের উপর একটি ফাংশন প্রয়োগ করে এবং পরিবর্তিত ডেটার একটি নতুন অ্যারে ফিরিয়ে দেয়।

_.collect এর উদাহরণ:

let numbers = [1, 2, 3, 4, 5];
let doubledNumbers = _.collect(numbers, function(num) {
    return num * 2;
});

console.log(doubledNumbers); // [2, 4, 6, 8, 10]

এখানে _.collect ফাংশনটি numbers অ্যারের প্রতিটি উপাদানে একটি ফাংশন প্রয়োগ করেছে, যা প্রতিটি সংখ্যাকে দ্বিগুণ (double) করছে এবং একটি নতুন অ্যারে তৈরি করছে।

_.collect এবং _.map প্রায় একই কাজ করে, তবে _.map অনেক বেশি ব্যবহৃত হয় এবং আধুনিক সংস্করণে _.collect ফাংশনটি পুরনো সংস্করণে রয়েছে।


_.map এবং _.collect দিয়ে ডেটা ম্যানিপুলেশন

এই দুটি ফাংশন ব্যবহার করে আপনি আপনার ডেটাকে সহজেই ম্যানিপুলেট (manipulate) করতে পারেন। এখানে কিছু বাস্তবজীবন উদাহরণ দেওয়া হলো:

1. অবজেক্টের প্রপার্টি পরিবর্তন করা

let products = [
    { name: "Laptop", price: 1200 },
    { name: "Phone", price: 800 },
    { name: "Tablet", price: 400 }
];

let discountedPrices = _.map(products, function(product) {
    return {
        name: product.name,
        discountedPrice: product.price * 0.9
    };
});

console.log(discountedPrices);
// [
//   { name: "Laptop", discountedPrice: 1080 },
//   { name: "Phone", discountedPrice: 720 },
//   { name: "Tablet", discountedPrice: 360 }
// ]

এখানে, _.map ফাংশনটি products অ্যারের প্রতিটি অবজেক্টের price প্রপার্টি থেকে ডিসকাউন্টেড প্রাইজ বের করে একটি নতুন অবজেক্ট তৈরি করছে।

2. অ্যারে ডেটা ফিল্টার করা এবং পরিবর্তন করা

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

let evenNumbersSquared = _.map(_.filter(numbers, function(num) {
    return num % 2 === 0;  // even numbers
}), function(num) {
    return num * num; // square each even number
});

console.log(evenNumbersSquared); // [4, 16, 36, 64, 100]

এখানে, প্রথমে _.filter দিয়ে ইভেন নম্বরগুলো ফিল্টার করা হয়েছে এবং পরে _.map ব্যবহার করে ঐ ইভেন নম্বরগুলোকে বর্গমূল (square) করা হয়েছে।


সারসংক্ষেপ

_.map এবং _.collect হল Underscore.js এর গুরুত্বপূর্ণ ফাংশন যা ডেটার প্রতিটি উপাদানে একটি নির্দিষ্ট ফাংশন প্রয়োগ করে একটি নতুন অ্যারে তৈরি করে। _.map হল আধুনিক কোডিং এর জন্য সেরা পছন্দ, এবং _.collect পুরনো সংস্করণে ব্যবহৃত হয় তবে একই কাজ করে। এই ফাংশনগুলোর মাধ্যমে ডেটা ম্যানিপুলেশন অনেক সহজ হয়ে যায় এবং জাভাস্ক্রিপ্ট কোডিং আরো সংক্ষিপ্ত এবং কার্যকরী হয়।

Content added By
Promotion

Are you sure to start over?

Loading...