_.reduce এবং _.foldl এর মধ্যে পার্থক্য
Underscore.js লাইব্রেরিতে _.reduce এবং _.foldl দুটি ফাংশনই অ্যারে বা তালিকার উপাদানগুলিকে একত্রিত করতে ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু পার্থক্য রয়েছে। দুটি ফাংশনই মূলত একটি "অ্যাকিউমুলেটর" বা সঞ্চয়কারী (যেমন সংখ্যা, অবজেক্ট বা অ্যারে) তৈরি করে এবং অ্যারে বা তালিকার প্রতিটি উপাদানকে তার মধ্যে একত্রিত করে।
_.reduce:
_.reduce হল একটি জেনেরিক ফাংশন যা অ্যারে বা তালিকার উপাদানগুলোকে একত্রিত করে, একটি একক মানে রূপান্তরিত করে। এটি ডিফল্টভাবে ডান দিক থেকে বাম দিকে কাজ করে (যদি কোনো স্টার্টিং ভ্যালু না দেওয়া হয়)।
_.foldl:
_.foldl হলো _.reduce এর একটি প্রাচীন সংস্করণ যা মূলত বামে থেকে ডানে কাজ করে (এটা লজিক্যালভাবে কোডিং লাইফ সাইকেলের একদম প্রথম সংস্করণ ছিল)।
উল্লেখযোগ্যভাবে, _.foldl বর্তমানে _.reduce দ্বারা প্রতিস্থাপিত হয়েছে, এবং _.foldl ব্যবহার করার পরিবর্তে আপনি সাধারণত _.reduce ব্যবহার করবেন।
_.reduce এবং _.foldl উদাহরণ দিয়ে ডেটা একত্রিত করা
১. _.reduce দিয়ে ডেটা একত্রিত করা
_.reduce একটি অ্যারে বা তালিকার সকল উপাদানকে একত্রিত করার জন্য ব্যবহৃত হয়। এটি দুটি আর্গুমেন্ট নেয়: প্রথমটি অ্যাকিউমুলেটর এবং দ্বিতীয়টি বর্তমান মান। নিচে একটি উদাহরণ দেওয়া হল:
// Underscore.js - _.reduce উদাহরণ
const numbers = [1, 2, 3, 4, 5];
// অ্যাকিউমুলেটর ব্যবহার করে সংখ্যা যোগ করা
const sum = _.reduce(numbers, function(memo, num) {
return memo + num;
}, 0);
console.log(sum); // আউটপুট: 15
এখানে, memo হলো অ্যাকিউমুলেটর এবং num হলো বর্তমান উপাদান। শুরুতে 0 ভ্যালু দেয়া হয়েছে, এবং প্রতিটি সংখ্যার সাথে যোগ করে মোট যোগফল বের করা হয়েছে।
২. _.foldl দিয়ে ডেটা একত্রিত করা
_.foldl ব্যবহারের ক্ষেত্রে, এটি অ্যারে বা তালিকার প্রথম উপাদান থেকে শুরু করে একত্রিত করে। যদিও এটি এখন পুরনো, তবুও কিছু কোডবেসে এটি দেখা যেতে পারে।
// Underscore.js - _.foldl উদাহরণ
const numbers = [1, 2, 3, 4, 5];
// অ্যাকিউমুলেটর ব্যবহার করে সংখ্যা যোগ করা
const sum = _.foldl(numbers, function(memo, num) {
return memo + num;
}, 0);
console.log(sum); // আউটপুট: 15
এখানে, _.foldl এবং _.reduce একইভাবে কাজ করে, কিন্তু তাদের কার্যপদ্ধতি সাদৃশ্য থাকতে পারে, তবে _.reduce আধুনিক কোডবেসে বেশি ব্যবহৃত হয়।
৩. অন্য একটি উদাহরণ: অ্যারে একত্রিত করা (সাধারণভাবে)
ধরা যাক, আপনি কিছু স্ট্রিং মান নিয়ে একটি অ্যারে তৈরি করেছেন এবং সেগুলোকে একত্রিত করতে চান:
const words = ['hello', 'world', 'from', 'underscore'];
// শব্দগুলো একত্রিত করা
const sentence = _.reduce(words, function(memo, word) {
return memo + ' ' + word;
}, '');
console.log(sentence); // আউটপুট: "hello world from underscore"
এখানে, অ্যাকিউমুলেটর হল একটি স্ট্রিং (শুরুতে খালি), এবং প্রতিটি শব্দের সাথে যোগ করা হচ্ছে।
৪. অ্যাকিউমুলেটর হিসেবে অবজেক্ট ব্যবহার করা
const users = [
{ 'name': 'John', 'age': 28 },
{ 'name': 'Jane', 'age': 22 },
{ 'name': 'Mike', 'age': 32 }
];
// অ্যাকিউমুলেটর হিসেবে অবজেক্ট ব্যবহার করে
const ageSum = _.reduce(users, function(memo, user) {
return memo + user.age;
}, 0);
console.log(ageSum); // আউটপুট: 82
এখানে, আমরা অ্যাকিউমুলেটর হিসেবে একটি সংখ্যা (এজ যোগ করা) ব্যবহার করেছি। _.reduce প্রতিটি ব্যবহারকারীর বয়স একত্রিত করছে এবং মোট বয়সের যোগফল প্রদান করছে।
_.reduce এবং _.foldl এর মধ্যে পার্থক্য সন্নিবেশিত
_.reduceহলো আধুনিক এবং অনেক বেশি ব্যবহৃত ফাংশন যা ডেটার উপর অপারেশন চালানোর জন্য, এবং বামে থেকে ডানে অপারেট করে।_.foldlএকইভাবে কাজ করত, তবে এটি একটি পুরনো সংস্করণ, যেটি সাধারণত এখন আর ব্যবহার হয় না এবং_.reduceদ্বারা প্রতিস্থাপিত হয়েছে।
_.reduce এবং _.foldl সাধারণভাবে একই কাজ করে এবং তাদের মধ্যে পার্থক্য খুবই সামান্য, তবে উন্নত এবং আধুনিক কোডবেসে _.reduce ব্যবহৃত হয়।
Read more