pluck(), scan() এর মাধ্যমে ডেটা ম্যানিপুলেশন

Transformation Operators - আরএক্সজেএস (RxJS) - Web Development

326

RxJS (Reactive Extensions for JavaScript) একটি শক্তিশালী লাইব্রেরি যা বিভিন্ন ধরনের অপারেটরের মাধ্যমে ডেটা ম্যানিপুলেশন করতে সহায়ক। এর মধ্যে pluck() এবং scan() অপারেটর দুটি ডেটা স্ট্রিমের উপর কাজ করে এবং তাদের মান পরিবর্তন করতে সাহায্য করে। এই দুটি অপারেটর বিভিন্ন ডেটা ট্রান্সফরমেশন বা অ্যাকমুলেশন (accumulation) করার জন্য ব্যবহৃত হয়।


1. pluck() অপারেটর

pluck() অপারেটরটি মূলত একটি Observable এর অবজেক্ট থেকে একটি নির্দিষ্ট প্রপার্টি (property) বের করার জন্য ব্যবহৃত হয়। এটি কোনো নির্দিষ্ট কীগুলির মানটি আনে এবং তার উপর কাজ করতে সহায়ক। যখন কোনো Observable স্ট্রিম অবজেক্টের একটি প্রপার্টি থেকে একাধিক মান পাঠায়, তখন pluck() ব্যবহার করে আপনি শুধু সেই প্রপার্টির মানটি বের করতে পারেন।

বৈশিষ্ট্য:

  • Object properties extraction: এটি অবজেক্টের নির্দিষ্ট প্রপার্টি বের করতে ব্যবহৃত হয়।
  • Flat output: pluck()-এর আউটপুটটি একটি সাধারণ মান হিসেবে পাওয়া যায়, অবজেক্টের মধ্যে অন্তর্ভুক্ত তথ্য নয়।

উদাহরণ:

import { of } from 'rxjs';
import { pluck } from 'rxjs/operators';

const data = [
  { name: 'John', age: 25 },
  { name: 'Jane', age: 30 },
  { name: 'Mike', age: 35 }
];

of(...data)
  .pipe(
    pluck('name') // 'name' প্রপার্টি থেকে মান বের করা
  )
  .subscribe(name => console.log(name));

// Output:
// John
// Jane
// Mike

এখানে, pluck('name') অপারেটরটি প্রতিটি অবজেক্টের name প্রপার্টি থেকে মান বের করেছে এবং শুধুমাত্র name এর মান আউটপুট করেছে।


2. scan() অপারেটর

scan() অপারেটরটি একটি অ্যাকুমুলেটর বা reducer হিসেবে কাজ করে, যা প্রতিটি ইভেন্ট বা মানের উপর ভিত্তি করে একটি অ্যাকুমুলেটেড ফলাফল তৈরি করে। এটি মূলত accumulation বা cumulative operations এর জন্য ব্যবহৃত হয়, যেমন সংখ্যা যোগ বা গুন করা, একটি অ্যারে তৈরি করা, ইত্যাদি।

scan() অপারেটরটি প্রথমে একটি ইনিশিয়াল মান নেয় এবং তারপর প্রতিটি ইভেন্ট বা মানের উপর কাজ করে। এটি একটি ইনপুট এবং আউটপুট মানের মধ্যে পরিবর্তন ঘটায়, এবং সম্পূর্ণ স্ট্রিমটি সম্পন্ন হওয়ার আগে এটিকে সাবস্ক্রাইবারদের কাছে সরবরাহ করে।

বৈশিষ্ট্য:

  • Accumulative operations: এটি আগের মানের সাথে নতুন মানের যোগফল, গুণফল ইত্যাদি বের করতে সহায়তা করে।
  • Stateful operation: এটি একটি স্টেট ধারণ করে এবং পরবর্তী মানগুলির সাথে সেই স্টেটটি আপডেট করে।

উদাহরণ:

import { of } from 'rxjs';
import { scan } from 'rxjs/operators';

const numbers = [1, 2, 3, 4, 5];

of(...numbers)
  .pipe(
    scan((acc, value) => acc + value, 0) // ইনিশিয়াল মান 0, প্রতিটি মানের সাথে যোগফল করা হচ্ছে
  )
  .subscribe(accumulatedValue => console.log(accumulatedValue));

// Output:
// 1
// 3
// 6
// 10
// 15

এখানে, scan() অপারেটরটি ইনপুট মানের প্রতি নতুন মান যোগ করছে এবং ধীরে ধীরে একটি অ্যাকুমুলেটেড মান তৈরি করছে। প্রতিটি নতুন মানের সাথে আগের মানের যোগফল হিসেবে আউটপুট প্রদর্শিত হয়।


pluck() এবং scan() এর মাধ্যমে ডেটা ম্যানিপুলেশন

pluck() এবং scan() দুটি অপারেটর একসাথে ব্যবহার করে ডেটা স্ট্রিমে অ্যাক্সেস এবং ম্যানিপুলেশন খুবই সহজ হয়ে যায়। pluck() সাধারণত অবজেক্ট থেকে নির্দিষ্ট প্রপার্টি বের করতে ব্যবহৃত হয়, যখন scan() স্টেট বা মানের অ্যাকুমুলেশন করতে সাহায্য করে।

উদাহরণ:

import { of } from 'rxjs';
import { pluck, scan } from 'rxjs/operators';

const data = [
  { id: 1, value: 10 },
  { id: 2, value: 20 },
  { id: 3, value: 30 }
];

of(...data)
  .pipe(
    pluck('value'), // 'value' প্রপার্টি থেকে মান বের করা
    scan((acc, value) => acc + value, 0) // মানগুলো যোগ করা
  )
  .subscribe(accumulatedValue => console.log(accumulatedValue));

// Output:
// 10
// 30
// 60

এখানে, প্রথমে pluck('value') অপারেটরটি অবজেক্টের value প্রপার্টি থেকে মান বের করেছে এবং তারপর scan() অপারেটরটি সেই মানগুলো একত্রিত করে একটি অ্যাকুমুলেটেড ফলাফল তৈরি করেছে।


সারাংশ

  • pluck() অপারেটরটি Observable-এর মধ্যে থাকা অবজেক্ট থেকে নির্দিষ্ট প্রপার্টি বের করে এবং সরল করে দেয়।
  • scan() অপারেটরটি অ্যাকুমুলেটেড বা cumulative মান তৈরি করতে ব্যবহৃত হয়, যা প্রতিটি নতুন মানের সাথে আগের মান যোগফল বা অন্য কোনো অপারেশন করতে সহায়তা করে।

এই অপারেটরগুলোর মাধ্যমে আপনি আপনার ডেটা স্ট্রিমকে সহজভাবে ম্যানিপুলেট করতে পারবেন এবং আরো কার্যকরীভাবে ডেটার উপর কাজ করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...