Underscore.js কি?
Underscore.js হল একটি JavaScript লাইব্রেরি যা আপনাকে JavaScript কোড লিখতে দ্রুত এবং আরও কার্যকরভাবে সাহায্য করে। এটি একটি ইউটিলিটি লাইব্রেরি, যার মধ্যে এমন ফাংশন এবং মেথড রয়েছে যা সাধারণত JavaScript-এ করা হয় না বা খুবই জটিল হয়। এটি অ্যারে, অবজেক্ট, ফাংশন, ইত্যাদির সাথে কাজ করার জন্য সহজ এবং কার্যকরী ফাংশন প্রদান করে। Underscore.js জাভাস্ক্রিপ্ট ডেভেলপারদের জন্য একটি শক্তিশালী টুল যা তাদের কোড সহজ এবং পড়তে সুবিধাজনক করে।
Underscore.js এর মাধ্যমে আপনি অ্যারে, অবজেক্ট, ফাংশন ইত্যাদি আরও সহজভাবে পরিচালনা করতে পারবেন এবং কোডিং দ্রুততর করতে পারবেন।
Underscore.js এর বেসিক কনসেপ্ট
Underscore.js বেশ কিছু মৌলিক কনসেপ্ট নিয়ে কাজ করে, যেমন ফাংশনাল প্রোগ্রামিং, ডেটা ম্যানিপুলেশন এবং কোল্লেকশনের হ্যান্ডলিং। এখানে আমরা এর কিছু মূল কনসেপ্ট সম্পর্কে আলোচনা করব:
১. কোল্লেকশন (Collections)
Underscore.js অ্যারে এবং অবজেক্টগুলির সাথে কাজ করতে একটি শক্তিশালী কোল্লেকশন API প্রদান করে। এই API-র সাহায্যে আপনি কোল্লেকশনের উপর বিভিন্ন অপারেশন যেমন ফিল্টার, ম্যাপ, রিডুস, এবং সোর্ট করতে পারেন।
_.map(): একটি অ্যারের প্রতিটি উপাদানকে একটি ফাংশন দিয়ে প্রক্রিয়াকরণ করা।
let numbers = [1, 2, 3, 4];
let doubled = _.map(numbers, function(num) {
return num * 2;
});
console.log(doubled); // [2, 4, 6, 8]
_.filter(): কন্ডিশনের ভিত্তিতে অ্যারের উপাদান ফিল্টার করা।
let numbers = [1, 2, 3, 4, 5];
let evenNumbers = _.filter(numbers, function(num) {
return num % 2 === 0;
});
console.log(evenNumbers); // [2, 4]
_.reduce(): একটি অ্যারের সব উপাদানকে একত্রিত করে একটি একক মানে পরিণত করা।
let numbers = [1, 2, 3, 4];
let sum = _.reduce(numbers, function(total, num) {
return total + num;
}, 0);
console.log(sum); // 10
২. অবজেক্ট (Objects)
Underscore.js অবজেক্টের উপর বিভিন্ন অপারেশন করার জন্য ফাংশন সরবরাহ করে, যেমন কী/ভ্যালু পেয়ার অনুসন্ধান, ডিফল্ট মান সেট করা, ইত্যাদি।
_.extend(): একটি অবজেক্টের প্রোপার্টি অন্য অবজেক্টে কপি করা।
let obj1 = { name: "John", age: 25 };
let obj2 = { age: 30, city: "New York" };
let result = _.extend(obj1, obj2);
console.log(result); // { name: "John", age: 30, city: "New York" }
_.defaults(): একটি অবজেক্টে যদি কোনো প্রোপার্টি না থাকে তবে ডিফল্ট মান সেট করা।
let obj = { name: "John" };
let result = _.defaults(obj, { name: "Default", age: 25 });
console.log(result); // { name: "John", age: 25 }
৩. ফাংশন (Functions)
Underscore.js ফাংশনাল প্রোগ্রামিংয়ের জন্যও বেশ কিছু শক্তিশালী ফিচার প্রদান করে।
_.bind(): একটি ফাংশনকে নির্দিষ্টthisকনটেক্সট এবং আর্গুমেন্ট দিয়ে বাউন্ড করা।
let obj = {
name: "John",
greet: function() {
console.log("Hello, " + this.name);
}
};
let greetPerson = _.bind(obj.greet, obj);
greetPerson(); // "Hello, John"
_.throttle(): একটি ফাংশনকে নির্দিষ্ট সময়ের মধ্যে একাধিকবার না চলতে দেওয়া।
let throttled = _.throttle(function() {
console.log("This will run once every 2 seconds.");
}, 2000);
throttled();
throttled();
throttled(); // Only one call will be executed.
_.debounce(): একটি ফাংশনকে নির্দিষ্ট সময়ের মধ্যে একাধিকবার চলতে দেওয়া না।
let debounced = _.debounce(function() {
console.log("This will run after 1 second of inactivity.");
}, 1000);
debounced();
debounced();
debounced(); // Runs once after 1 second of inactivity.
৪. ইউটিলিটি ফাংশন (Utility Functions)
Underscore.js কিছু সাধারণ ইউটিলিটি ফাংশন প্রদান করে যা ডেভেলপারদের কাজ সহজ করে।
_.clone(): একটি অবজেক্ট বা অ্যারের কপি তৈরি করা।
let original = { name: "John", age: 25 };
let cloned = _.clone(original);
console.log(cloned); // { name: "John", age: 25 }
_.isEmpty(): একটি অবজেক্ট বা অ্যারে খালি কিনা তা চেক করা।
let obj = {};
console.log(_.isEmpty(obj)); // true
_.range(): একটি নির্দিষ্ট পরিসরের মধ্যে একটি অ্যারে তৈরি করা।
let numbers = _.range(1, 5);
console.log(numbers); // [1, 2, 3, 4]
Underscore.js এর কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য
- অ্যারে ম্যানিপুলেশন: Underscore.js অ্যারে ফাংশনগুলির সাহায্যে খুব সহজে অ্যারে ম্যানিপুলেশন করা যায়। যেমন,
_.map(),_.filter(),_.reduce()ইত্যাদি। - ডেটা ম্যানিপুলেশন: অবজেক্টের উপর অপারেশন করার জন্য অনেক সাহায্যকারী ফাংশন যেমন
_.extend(),_.defaults(),_.isEmpty()। - ফাংশনাল প্রোগ্রামিং:
_.bind(),_.debounce(),_.throttle()ফাংশনগুলি ডেভেলপারদের ফাংশনাল প্রোগ্রামিং সিস্টেম তৈরি করতে সহায়তা করে।
সারাংশ
Underscore.js হল একটি শক্তিশালী JavaScript লাইব্রেরি যা সাধারণভাবে ব্যবহৃত JavaScript কার্যক্রমকে সহজ করে তোলে। এটি অ্যারে, অবজেক্ট এবং ফাংশনের জন্য একটি সিরিজ সরঞ্জাম সরবরাহ করে যা ডেভেলপারদের দ্রুত এবং কার্যকরী কোড লিখতে সহায়তা করে। Underscore.js ফাংশনাল প্রোগ্রামিং, ডেটা ম্যানিপুলেশন, এবং কার্যকরী ইউটিলিটি ফাংশনের মাধ্যমে কোডের দক্ষতা এবং পারফরম্যান্স উন্নত করতে সহায়তা করে।
Functional Programming (FP) কি?
Functional Programming (FP) একটি প্রোগ্রামিং প্যারাডাইম যা গণনা এবং সমস্যার সমাধান করার জন্য ফাংশন ব্যবহারের উপর ভিত্তি করে। FP-এর মূল ধারণাগুলি হল:
- ফাংশন প্রথম (First-Class Functions): ফাংশনকে ডাটা হিসেবে আচরণ করা হয়, অর্থাৎ ফাংশনকে আর্গুমেন্ট হিসেবে পাস করা যায়, রিটার্ন ভ্যালু হিসেবে পাওয়া যায় এবং এটি একটি ভেরিয়েবলের মধ্যে সংরক্ষিত থাকতে পারে।
- এলিজিবল স্টেট (Immutable State): FP-তে, ডাটা পরিবর্তন করা হয় না, বরং নতুন ডাটা তৈরি করা হয়। এইভাবে সাইড-এফেক্ট (side-effect) এড়ানো সম্ভব হয়।
- হায়ার অর্ডার ফাংশন (Higher-Order Functions): ফাংশন যেগুলি অন্যান্য ফাংশনকে আর্গুমেন্ট হিসেবে গ্রহণ করে অথবা ফাংশন রিটার্ন করে, তাদেরকে হায়ার অর্ডার ফাংশন বলা হয়।
- প্রসেসিং আনা ডেটা (Pure Functions): একটি ফাংশন যদি কোনো আর্গুমেন্টের উপর ভিত্তি করে একটি নির্দিষ্ট আউটপুট প্রদান করে এবং এটি বাহ্যিক অবস্থার (side effects) উপর নির্ভর না করে, তাহলে সেটি একটি pure function।
Functional Programming এর উদ্দেশ্য হল কোডকে সহজ, পুনঃব্যবহারযোগ্য এবং পূর্বানুমানযোগ্য (predictable) করা। একে অপরের উপর নির্ভর না করে আলাদা আলাদা ফাংশনগুলো নিয়ে কাজ করা হয়, যাতে কোডের বিশ্লেষণ এবং ডিবাগিং আরও সহজ হয়।
Underscore.js কি?
Underscore.js একটি JavaScript লাইব্রেরি যা Functional Programming এর ধারণা ও টুলস সরবরাহ করে। এটি একটি হালকা ওজনের লাইব্রেরি এবং এতে প্রচুর পরিমাণে ফাংশনাল মেথড রয়েছে যা JavaScript কোডিংয়ের সহজতা এবং গতিকে আরও উন্নত করতে সাহায্য করে।
Underscore.js মূলত নিম্নলিখিত কাজগুলো সহজ করে:
- এলিজিবল অপারেশন: যেমন ডেটা ফিল্টার, ম্যাপ, রিডুস ইত্যাদি।
- হায়ার অর্ডার ফাংশন: ফাংশনগুলি একে অপরকে পাস করতে বা ফাংশন রিটার্ন করার মাধ্যমে কাজ সহজ করে।
- এম্বেডেড মেথডস: যেমন, সমষ্টি (sum), গড় (mean), ফিল্টার (filter) ইত্যাদি।
Underscore.js JavaScript-এ Functional Programming কৌশলগুলো প্রয়োগ করতে সাহায্য করে এবং ডেভেলপারদের জন্য একটি শক্তিশালী ইউটিলিটি লাইব্রেরি সরবরাহ করে।
Underscore.js এর সাথে Functional Programming এর সম্পর্ক
Underscore.js সরবরাহ করে অনেক Functional Programming এর পদ্ধতি, যা JavaScript ডেভেলপারদের জন্য কার্যকরী হতে পারে। এর মাধ্যমে আপনি আরো কমপ্যাক্ট এবং কার্যকরী কোড লিখতে পারেন, যা Functional Programming এর মৌলিক নীতিগুলি অনুসরণ করে।
Underscore.js এর কিছু মূল ফাংশনাল ফিচার:
_.map(): এটি একটি হায়ার অর্ডার ফাংশন যা একটি অ্যারে বা অবজেক্টের উপর কাজ করে এবং একটি নতুন অ্যারে রিটার্ন করে, যার প্রতিটি উপাদান একটি নির্দিষ্ট ফাংশনের মাধ্যমে পরিবর্তিত হয়।উদাহরণ:
var numbers = [1, 2, 3]; var doubled = _.map(numbers, function(num) { return num * 2; }); console.log(doubled); // [2, 4, 6]_.filter(): এই ফাংশনটি একটি অ্যারে বা অবজেক্টের সকল উপাদান পরীক্ষা করে, এবং সেগুলিকে ফিল্টার করে, যা একটি নির্দিষ্ট শর্ত পূরণ করে।উদাহরণ:
var numbers = [1, 2, 3, 4, 5]; var evenNumbers = _.filter(numbers, function(num) { return num % 2 === 0; }); console.log(evenNumbers); // [2, 4]_.reduce():reduceএকটি হায়ার অর্ডার ফাংশন যা একটি অ্যারের উপাদানগুলোকে একত্রিত করে একটি একক ভ্যালু রিটার্ন করে। এটি একটি pure function ব্যবহার করে।উদাহরণ:
var numbers = [1, 2, 3, 4]; var sum = _.reduce(numbers, function(total, num) { return total + num; }, 0); console.log(sum); // 10_.each(): এটি একটি হায়ার অর্ডার ফাংশন যা অ্যারে বা অবজেক্টের উপর লুপ করে এবং প্রতিটি উপাদান বা কী-ভ্যালুর জন্য নির্দিষ্ট একটি ফাংশন রান করে।উদাহরণ:
var numbers = [1, 2, 3, 4]; _.each(numbers, function(num) { console.log(num); }); // Output: 1, 2, 3, 4_.clone(): একটি ফাংশন যা কোনো অবজেক্ট বা অ্যারে ক্লোন (প্রতিলিপি) করে। এটি মূল অবজেক্টের অপরিবর্তিত সংস্করণ রাখে, যা মিউটেবল স্টেট রোধ করতে সহায়তা করে।উদাহরণ:
var original = [1, 2, 3]; var copy = _.clone(original); copy.push(4); console.log(original); // [1, 2, 3] console.log(copy); // [1, 2, 3, 4]
WebAssembly এবং Functional Programming এর সাথে Underscore.js এর সম্পর্ক
WebAssembly (Wasm) হল একটি আধুনিক প্রযুক্তি যা দ্রুত পারফরম্যান্স প্রদান করে এবং এটি ব্রাউজারে বিভিন্ন ভাষায় লেখা কোড রান করতে সহায়তা করে। Underscore.js এর সাথে এর সম্পর্ক থাকতে পারে যখন আপনি মেশিন লার্নিং বা ইনফরমেশন প্রসেসিং এর মতো জটিল কাজ ব্রাউজারে করতে চান। Underscore.js যেমন ফাংশনাল প্রোগ্রামিং ফিচার প্রদান করে, তেমনি WebAssembly পদ্ধতিগুলিকে ব্যবহার করে আরও দ্রুত পারফরম্যান্স তৈরি করতে সহায়তা করে, যা কোড অপটিমাইজেশন এবং ব্রাউজারের সীমাবদ্ধতা কাটাতে কাজে আসে।
সারাংশ
Functional Programming (FP) হল একটি প্রোগ্রামিং প্যারাডাইম যা ফাংশন ব্যবহার করে কোড লিখতে সহায়তা করে। Underscore.js একটি শক্তিশালী JavaScript লাইব্রেরি যা Functional Programming এর ধারণাগুলিকে সরলভাবে প্রয়োগ করতে সহায়তা করে, যেমন হায়ার অর্ডার ফাংশন, ইমিউটেবল ডেটা, এবং কাস্টম ফাংশন তৈরি। Underscore.js-এ অন্তর্ভুক্ত ফাংশনগুলো যেমন map, reduce, filter এবং clone FP এর মূল ধারণাগুলিকে বাস্তবায়িত করে এবং JavaScript কোডিংকে আরও কার্যকরী ও কমপ্যাক্ট করে তোলে।
Underscore.js কি?
Underscore.js হল একটি JavaScript লাইব্রেরি যা সাধারণভাবে ব্যবহৃত কিছু ফাংশনালিটির জন্য সাহায্যকারী টুলস প্রদান করে। এটি ডেটা স্ট্রাকচার যেমন অ্যারে, অবজেক্ট, ফাংশন ইত্যাদি নিয়ন্ত্রণে অনেক সুবিধা প্রদান করে, যেমন অ্যারে ম্যাপিং, ফিল্টারিং, এবং রিডিউসিং, যা কোড লেখার সময় অনেক সময় বাঁচাতে সাহায্য করে। Underscore.js JavaScript-এ ফাংশনাল প্রোগ্রামিং ধারণাগুলি বাস্তবায়ন করতে সহায়তা করে।
Underscore.js এর ফিচার এবং সুবিধা
Underscore.js বেশ কিছু শক্তিশালী ফিচার প্রদান করে যা ওয়েব ডেভেলপমেন্টে সহজতা আনে:
- ডেটা ম্যানিপুলেশন ফাংশন:
map,filter,reduce,find,each,sortByইত্যাদি। - আর্গুমেন্ট ক্লোজিং: ক্লোজার ব্যবহার করে আর্গুমেন্ট ক্যাপচার করা।
- আধুনিক JavaScript ফাংশনাল প্রোগ্রামিং:
compose,bind,throttle,debounceইত্যাদি। - ডিপলিকেট/ডুপ্লিকেট চেকিং:
uniq,union,intersection,differenceইত্যাদি। - অন্যান্য ইউটিলিটি ফাংশন:
noConflict,template,delayইত্যাদি।
Underscore.js ডকুমেন্টেশন এবং রিসোর্স
Underscore.js এর ফিচারগুলি ব্যবহার করতে এবং লাইব্রেরিটির সঠিক ব্যবহার শিখতে, কিছু গুরুত্বপূর্ণ রিসোর্স এবং ডকুমেন্টেশন অনুসরণ করতে পারেন:
১. অফিশিয়াল ডকুমেন্টেশন:
Underscore.js এর অফিসিয়াল ডকুমেন্টেশন তার ফিচার, ফাংশন, এবং ব্যবহার বিধি সম্পর্কে বিশদ বর্ণনা প্রদান করে। এটি ব্যবহারকারীদের জন্য সহজবোধ্য এবং উদাহরণসহ দেয়া হয়।
অফিশিয়াল ডকুমেন্টেশন লিংক:
এই ডকুমেন্টেশনটি বিভিন্ন ধরনের ফাংশনের বিশদ বর্ণনা, সিনট্যাক্স, এবং ব্যবহার উদাহরণ প্রদান করে। আপনি এখানে সমস্ত উপলব্ধ ফাংশন, যেমন অ্যারে ম্যানিপুলেশন, অবজেক্ট হেল্পার, ফাংশনাল প্রোগ্রামিং, ইত্যাদির জন্য কোড উদাহরণ এবং ডিটেইল পেতে পারেন।
২. GitHub রিপোজিটরি:
Underscore.js এর ওপেন সোর্স কোড এবং আপডেটের জন্য GitHub রিপোজিটরি ব্যবহার করা হয়। এখানে আপনি লাইব্রেরির সোর্স কোড দেখতে পাবেন, টিকিট খোলা, এবং কন্ট্রিবিউট করার জন্য পুল রিকোয়েস্ট তৈরি করতে পারবেন।
GitHub লিংক:
৩. টিউটোরিয়াল এবং কোর্স:
Underscore.js শেখার জন্য কিছু জনপ্রিয় অনলাইন টিউটোরিয়াল এবং কোর্স রয়েছে। কিছু গুরুত্বপূর্ণ টিউটোরিয়াল এবং কোর্স থেকে আপনি লাইব্রেরিটি কীভাবে কার্যকরীভাবে ব্যবহার করবেন তা শিখতে পারবেন।
৪. StackOverflow এবং কমিউনিটি:
Underscore.js ব্যবহার করার সময় যে কোনো সমস্যা বা প্রশ্নের জন্য StackOverflow এবং অন্যান্য কমিউনিটি ফোরামে সাহায্য পাওয়া যায়। এর মাধ্যমে আপনি অন্যান্য ডেভেলপারদের থেকে সমস্যার সমাধান পেতে পারেন এবং নিজের প্রশ্নও করতে পারেন।
৫. ইউটিউব টিউটোরিয়াল:
ইউটিউবে আপনি Underscore.js নিয়ে অনেক ভিডিও টিউটোরিয়াল পাবেন যা লাইব্রেরিটি কীভাবে ব্যবহার করবেন তা সহজভাবে ব্যাখ্যা করে।
Underscore.js এর কিছু সাধারণ ফাংশনের উদাহরণ
- map(): অ্যারের প্রতিটি আইটেমে ফাংশন প্রয়োগ করে একটি নতুন অ্যারে তৈরি করা।
let numbers = [1, 2, 3];
let squares = _.map(numbers, function(num) { return num * num; });
console.log(squares); // [1, 4, 9]
- filter(): একটি ফাংশন ব্যবহার করে অ্যারে থেকে নির্দিষ্ট শর্ত অনুযায়ী আইটেম ফিল্টার করা।
let numbers = [1, 2, 3, 4, 5];
let evenNumbers = _.filter(numbers, function(num) { return num % 2 === 0; });
console.log(evenNumbers); // [2, 4]
- reduce(): অ্যারের উপাদানগুলো একত্রিত করে একটি একক মান তৈরি করা।
let numbers = [1, 2, 3, 4];
let sum = _.reduce(numbers, function(total, num) { return total + num; }, 0);
console.log(sum); // 10
- uniq(): অ্যারে থেকে ডুপ্লিকেট মান অপসারণ করা।
let numbers = [1, 2, 3, 3, 4, 4, 5];
let uniqueNumbers = _.uniq(numbers);
console.log(uniqueNumbers); // [1, 2, 3, 4, 5]
- extend(): একাধিক অবজেক্টকে একত্রিত করা।
let obj1 = {name: "John", age: 30};
let obj2 = {city: "New York", country: "USA"};
let combined = _.extend({}, obj1, obj2);
console.log(combined); // {name: "John", age: 30, city: "New York", country: "USA"}
সারাংশ
Underscore.js হল একটি শক্তিশালী JavaScript লাইব্রেরি যা ডেটা ম্যানিপুলেশন, ফাংশনাল প্রোগ্রামিং এবং অন্যান্য প্রয়োজনীয় ফিচারের জন্য সহায়তা প্রদান করে। এর মাধ্যমে আপনি আপনার ওয়েব অ্যাপ্লিকেশনে আরও কার্যকরী এবং দ্রুত কোড লিখতে পারবেন। অফিসিয়াল ডকুমেন্টেশন, GitHub রিপোজিটরি, টিউটোরিয়াল এবং ইউটিউব রিসোর্সের মাধ্যমে আপনি এই লাইব্রেরির কার্যকারিতা শিখতে এবং আপনার প্রোজেক্টে ব্যবহার করতে পারবেন। Underscore.js ব্যবহার করলে জটিল কাজগুলি সহজ হয়ে ওঠে, এবং কোডিংয়ের সময় অনেক সময় বাঁচানো যায়।
Underscore.js কি?
Underscore.js একটি জনপ্রিয় JavaScript লাইব্রেরি যা অ্যারে, অবজেক্ট, ফাংশন এবং অন্যান্য ডেটা স্ট্রাকচারকে আরও সহজ ও কার্যকরভাবে পরিচালনা করার জন্য সাহায্য করে। এটি অত্যন্ত শক্তিশালী ফাংশনাল প্রোগ্রামিং ধারণা যেমন হাইয়ার-অর্ডার ফাংশন, কলব্যাক, এবং লজিকাল ফাংশনসমূহ প্রদান করে। Underscore.js আপনাকে ডেটার উপর অপারেশন করতে, ফিল্টারিং, ম্যাপিং, রিডিউসিং এবং অন্যান্য কমন টাস্ক খুব সহজভাবে করতে সহায়তা করে।
Underscore.js এর মৌলিক সিনট্যাক্স
Underscore.js লাইব্রেরি ব্যবহারের জন্য প্রথমে এটি ইনক্লুড করতে হয়। আপনি এটি CDN থেকে বা NPM প্যাকেজ হিসেবে ব্যবহার করতে পারেন।
১. CDN এর মাধ্যমে ইনক্লুড করা:
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.13.1/underscore-min.js"></script>
২. NPM এর মাধ্যমে ইনস্টল:
npm install underscore
৩. Underscore.js এর মৌলিক ফাংশন
Underscore.js বেশ কিছু কমন ফাংশন প্রদান করে যেগুলি অ্যারে এবং অবজেক্টের সাথে কাজ করতে সহায়তা করে। এখানে কিছু মূল ফাংশনের উদাহরণ দেওয়া হলো:
1. _.each() - লুপিং (Iteration)
_.each() অ্যারে বা অবজেক্টের প্রতিটি আইটেমে ফাংশন চালানোর জন্য ব্যবহৃত হয়।
_.each([1, 2, 3], function(num) {
console.log(num);
});
// Output: 1, 2, 3
2. _.map() - ম্যাপিং (Mapping)
_.map() ফাংশন অ্যারের প্রতিটি আইটেমে একটি ফাংশন প্রয়োগ করে এবং একটি নতুন অ্যারে রিটার্ন করে।
var doubled = _.map([1, 2, 3], function(num) {
return num * 2;
});
console.log(doubled);
// Output: [2, 4, 6]
3. _.filter() - ফিল্টারিং (Filtering)
_.filter() ফাংশন একটি কন্ডিশন প্রদান করে, যা অ্যারের আইটেমগুলিকে ফিল্টার করে, শুধুমাত্র যে আইটেমগুলো কন্ডিশন মেটায়, তা রিটার্ন করে।
var evenNumbers = _.filter([1, 2, 3, 4], function(num) {
return num % 2 === 0;
});
console.log(evenNumbers);
// Output: [2, 4]
4. _.reduce() - রিডিউসিং (Reducing)
_.reduce() ফাংশন অ্যারের সমস্ত আইটেমকে একত্রিত করে একটি একক মানে রূপান্তরিত করে। এটি একটি একক ভ্যালু তৈরির জন্য ব্যবহার করা হয়।
var sum = _.reduce([1, 2, 3], function(total, num) {
return total + num;
}, 0);
console.log(sum);
// Output: 6
5. _.find() - ফাইন্ডিং (Finding)
_.find() ফাংশন অ্যারে বা অবজেক্টের মধ্যে প্রথম মেলে এমন আইটেম রিটার্ন করে।
var firstEven = _.find([1, 2, 3, 4], function(num) {
return num % 2 === 0;
});
console.log(firstEven);
// Output: 2
Underscore.js স্টাইল গাইড
Underscore.js এর কিছু নির্দিষ্ট স্টাইল এবং কনভেনশন অনুসরণ করলে কোড আরো পরিষ্কার এবং মেইনটেনযোগ্য হবে। নিচে কিছু সাধারণ স্টাইল গাইড দেওয়া হলো যা কোড লিখতে সহায়তা করবে:
১. ফাংশন নেমিং কনভেনশন (Function Naming Convention)
Underscore.js এ ফাংশন নামগুলি ছোট হাতের অক্ষরে এবং সরল রাখা হয়। ফাংশন নামের ক্ষেত্রে সাধারণত verb-noun কনভেনশন অনুসরণ করা হয়। উদাহরণস্বরূপ:
_.each()_.map()_.filter()
২. নামকরণের স্টাইল (Naming Style)
- অ্যারে এবং অবজেক্টের জন্য বর্ণনামূলক নাম: ভেরিয়েবল এবং ফাংশন নাম এমনভাবে বেছে নিন যাতে তা পরিষ্কারভাবে বোঝায় সে কী কাজ করবে। যেমন,
numbers,totalPrice,findActiveUsersইত্যাদি।
৩. ফাংশন আর্গুমেন্টের মধ্যে স্পষ্টতা (Clarity in Function Arguments)
ফাংশনের মধ্যে কী আর্গুমেন্ট পাস করা হচ্ছে তা পরিষ্কার রাখুন। প্রতিটি আর্গুমেন্টের নাম এমন হওয়া উচিত যাতে ব্যবহারকারীরা তা সহজে বুঝতে পারে।
// Bad
_.map(arr, fn);
// Good
_.map(array, callback);
৪. ফাংশন চেইনিং (Function Chaining)
Underscore.js ফাংশনগুলি সাধারণত চেইনিংয়ের মাধ্যমে একে অপরের সাথে কাজ করতে পারে। চেইনিং ব্যবহারের সময়, কোডের গঠন পরিষ্কার এবং মডুলার রাখা উচিত।
var result = _.chain([1, 2, 3, 4])
.filter(function(num) { return num % 2 === 0; })
.map(function(num) { return num * 2; })
.value();
console.log(result);
// Output: [4, 8]
৫. এলিফ এবং ডিফাউল্ট ব্যবহার (Use of else and default)
এলিফ ব্যবহার করার সময়, কোডটি যদি বেশ জটিল হয় তবে একটি default ফাংশন ব্যবহার করতে পারেন।
_.each([1, 2, 3], function(num) {
if (num === 2) {
console.log("Found 2");
} else {
console.log("Not 2");
}
});
এছাড়া, যেখানে প্রয়োজন সেখানে default ব্যবহার করুন যাতে কোডের মান পূর্ণ থাকে।
৬. ডকুমেন্টেশন এবং কমেন্টস (Documentation and Comments)
Underscore.js কোডে সাধারণত খুব কম মন্তব্য ব্যবহার করা হয়, তবে বড় এবং জটিল কোডের ক্ষেত্রে মন্তব্য ব্যবহার করতে পারেন যাতে কোডের উদ্দেশ্য পরিষ্কার হয়।
// Filter even numbers from an array
var evenNumbers = _.filter([1, 2, 3, 4], function(num) {
return num % 2 === 0;
});
Underscore.js এর ব্যবহারিক উদাহরণ
এখানে Underscore.js এর একটি ছোট উদাহরণ দেওয়া হলো যা কিছু মৌলিক ফাংশন ব্যবহার করে:
// Array of objects
var users = [
{ 'name': 'John', 'age': 28 },
{ 'name': 'Jane', 'age': 34 },
{ 'name': 'Doe', 'age': 45 }
];
// 1. Filtering users older than 30
var olderThan30 = _.filter(users, function(user) {
return user.age > 30;
});
console.log(olderThan30);
// 2. Mapping user names to an array
var userNames = _.map(users, function(user) {
return user.name;
});
console.log(userNames);
// 3. Finding a specific user by name
var user = _.find(users, function(user) {
return user.name === 'Jane';
});
console.log(user);
সারাংশ
Underscore.js একটি শক্তিশালী লাইব্রেরি যা JavaScript-এ সাধারণ ডেটা অপারেশনগুলো যেমন ম্যাপিং, ফিল্টারিং, এবং রিডিউসিং সহজভাবে করতে সহায়তা করে। এর সিম্পল সিনট্যাক্স এবং সুবিধাজনক ফাংশনগুলির সাহায্যে ডেভেলপাররা কোড দ্রুত এবং সহজভাবে লিখতে পারে। স্টাইল গাইড এবং নামকরণের কনভেনশন অনুসরণ করে Underscore.js কোড লেখা আরও পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য হয়।
Read more