Lodash এর Object Manipulation Methods গুলি আপনাকে object এর বিভিন্ন প্রপার্টি পরিচালনা করতে সাহায্য করে। এগুলি object তৈরি, কপি, মার্জ (merge), প্রপার্টি খুঁজে পাওয়া, এবং অন্যান্য কার্যকরী অপারেশন সম্পন্ন করার জন্য ব্যবহৃত হয়। Lodash এর object manipulation ফাংশনগুলো আপনাকে জটিল object গুলি সহজে পরিচালনা করার সুযোগ দেয়।
১. _.get()
_.get() ফাংশনটি একটি object থেকে নির্দিষ্ট প্রপার্টি বা nested প্রপার্টি পেতে ব্যবহার করা হয়। এটি একটি ডিফল্ট মানও প্রদান করতে পারে, যদি নির্দিষ্ট প্রপার্টি না পাওয়া যায়।
উদাহরণ:
const _ = require('lodash');
let object = { a: { b: { c: 3 } } };
// _.get() ব্যবহার করে nested প্রপার্টি পাওয়া
let value = _.get(object, 'a.b.c');
console.log(value); // 3
// যদি প্রপার্টি না থাকে তবে ডিফল্ট মান ফিরিয়ে দিবে
let defaultValue = _.get(object, 'a.b.d', 'Not Found');
console.log(defaultValue); // Not Found
এটি object থেকে সহজেই nested প্রপার্টি অ্যাক্সেস করার জন্য ব্যবহৃত হয়।
২. _.set()
_.set() ফাংশনটি একটি object এ নতুন প্রপার্টি সেট করতে বা nested প্রপার্টি আপডেট করতে ব্যবহৃত হয়। এটি একটি নির্দিষ্ট পাথ (path) দিয়ে object এ প্রপার্টি সেট করে।
উদাহরণ:
const _ = require('lodash');
let object = { a: { b: { c: 3 } } };
// _.set() ব্যবহার করে নতুন প্রপার্টি সেট করা
_.set(object, 'a.b.d', 4);
console.log(object); // { a: { b: { c: 3, d: 4 } } }
// Nested প্রপার্টি আপডেট করা
_.set(object, 'a.b.c', 5);
console.log(object); // { a: { b: { c: 5, d: 4 } } }
এটি object এ নতুন প্রপার্টি যোগ করতে বা বিদ্যমান প্রপার্টি আপডেট করতে সাহায্য করে।
৩. _.merge()
_.merge() ফাংশনটি দুটি object মার্জ করতে ব্যবহৃত হয়। এটি প্রথম object এর সাথে দ্বিতীয় object এর প্রপার্টি যুক্ত করে, এবং যদি কোনো প্রপার্টি একই নামের হয় তবে nested object গুলোও মার্জ (merge) করে।
উদাহরণ:
const _ = require('lodash');
let object1 = { a: 1, b: { x: 2 } };
let object2 = { b: { y: 3 }, c: 4 };
// _.merge() ব্যবহার করে object গুলি মার্জ করা
let mergedObject = _.merge(object1, object2);
console.log(mergedObject);
// { a: 1, b: { x: 2, y: 3 }, c: 4 }
এটি nested object গুলোকেও সঠিকভাবে মার্জ করে, তাই এটি complex object গুলির জন্য খুবই উপকারী।
৪. _.clone() এবং _.cloneDeep()
_.clone(): একটি shallow কপি তৈরি করে, যা object এর প্রথম স্তরের প্রপার্টি কপি করে, কিন্তু nested object গুলি শেয়ার (reference) করে।_.cloneDeep(): একটি deep কপি তৈরি করে, যার মানে object এর সমস্ত স্তরের প্রপার্টি কপি করা হয়।
উদাহরণ:
const _ = require('lodash');
let object = { a: 1, b: { c: 2 } };
// _.clone() ব্যবহার করে shallow কপি তৈরি করা
let shallowClone = _.clone(object);
shallowClone.b.c = 3;
console.log(object.b.c); // 3 (original object modify হবে)
// _.cloneDeep() ব্যবহার করে deep কপি তৈরি করা
let deepClone = _.cloneDeep(object);
deepClone.b.c = 4;
console.log(object.b.c); // 2 (original object অপরিবর্তিত)
_.cloneDeep() ব্যবহার করলে object এর nested প্রপার্টিগুলিও কপি হবে এবং এটি অপরিবর্তিত থাকবে।
৫. _.pick() এবং _.omit()
_.pick(): নির্দিষ্ট প্রপার্টি গুলি একটি object থেকে নির্বাচন করে।_.omit(): নির্দিষ্ট প্রপার্টি গুলি একটি object থেকে বাদ (remove) করে।
উদাহরণ:
const _ = require('lodash');
let object = { a: 1, b: 2, c: 3 };
// _.pick() ব্যবহার করে নির্দিষ্ট প্রপার্টি নির্বাচন করা
let pickedObject = _.pick(object, ['a', 'c']);
console.log(pickedObject); // { a: 1, c: 3 }
// _.omit() ব্যবহার করে নির্দিষ্ট প্রপার্টি বাদ দেওয়া
let omittedObject = _.omit(object, ['b']);
console.log(omittedObject); // { a: 1, c: 3 }
এটি object এর প্রপার্টি গুলি ফিল্টার করতে বা বাদ দিতে সাহায্য করে।
৬. _.has() এবং _.hasIn()
_.has(): নির্দিষ্ট প্রপার্টি একটি object এর মধ্যে রয়েছে কিনা তা চেক করে।_.hasIn():_.has()এর মতোই, তবে এটি prototype chain এর মাধ্যমে সমস্ত প্রপার্টি পরীক্ষা করে।
উদাহরণ:
const _ = require('lodash');
let object = { a: 1, b: 2 };
// _.has() ব্যবহার করে object এ প্রপার্টি চেক করা
console.log(_.has(object, 'a')); // true
console.log(_.has(object, 'c')); // false
// _.hasIn() ব্যবহার করে prototype chain চেক করা
console.log(_.hasIn(object, 'toString')); // true (prototype এ থাকা method)
এটি object এ একটি প্রপার্টি আছে কিনা তা চেক করতে ব্যবহৃত হয়।
৭. _.keys(), _.values(), এবং _.entries()
_.keys(): একটি object এর সমস্ত প্রপার্টির নাম (keys) ফিরিয়ে দেয়।_.values(): একটি object এর সমস্ত প্রপার্টির মান (values) ফিরিয়ে দেয়।_.entries(): একটি object এর সমস্ত key-value পেয়ার ফিরিয়ে দেয়।
উদাহরণ:
const _ = require('lodash');
let object = { a: 1, b: 2, c: 3 };
// _.keys() ব্যবহার করে object এর keys পাওয়া
console.log(_.keys(object)); // ['a', 'b', 'c']
// _.values() ব্যবহার করে object এর values পাওয়া
console.log(_.values(object)); // [1, 2, 3]
// _.entries() ব্যবহার করে object এর key-value পেয়ার পাওয়া
console.log(_.entries(object)); // [['a', 1], ['b', 2], ['c', 3]]
এটি object এর প্রপার্টি গুলোর উপর কাজ করার জন্য সহজ পদ্ধতি সরবরাহ করে।
উপসংহার
Lodash এর Object Manipulation Methods গুলি object এর উপর বিভিন্ন কার্যকরী অপারেশন সম্পন্ন করতে সাহায্য করে। এই ফাংশনগুলো ব্যবহার করে আপনি object তৈরি, প্রপার্টি অ্যাক্সেস, কপি, মার্জ, এবং আরও অনেক কিছু সহজে করতে পারেন। Lodash এর এই ফাংশনগুলোর মাধ্যমে object manipulation অনেক বেশি সহজ এবং কার্যকরী হয়, যা JavaScript এ উন্নত অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য অপরিহার্য।
Lodash এর _.assign(), _.merge(), এবং _.omit() ফাংশনগুলো অবজেক্ট ম্যানিপুলেশনের জন্য খুবই জনপ্রিয় এবং শক্তিশালী ফাংশন। এগুলি অবজেক্টের ডেটা পরিচালনা, মার্জ (combine), কপি, এবং নির্দিষ্ট প্রোপার্টি সরানো সহজ করে তোলে। এখানে এই ফাংশনগুলির ব্যবহার ব্যাখ্যা করা হলো।
১. _.assign() এর ব্যবহার
_.assign() ফাংশনটি একটি বা একাধিক অবজেক্টের প্রোপার্টি অন্য একটি অবজেক্টে কপি করে। এটি শ্যালো কপি (shallow copy) তৈরি করে, অর্থাৎ যে অবজেক্টগুলোর ভ্যালু আরেকটি অবজেক্ট বা অ্যারে, সেগুলোর কপি হবে না, বরং তাদের রেফারেন্স কপি হবে।
সাধারণ সিনট্যাক্স:
_.assign(object, ...sources);
- object: মূল অবজেক্ট, যেটিতে অন্যান্য অবজেক্টের প্রোপার্টি কপি হবে।
- sources: এক বা একাধিক অবজেক্ট যেগুলোর প্রোপার্টি মূল অবজেক্টে কপি হবে।
উদাহরণ:
const _ = require('lodash');
let obj1 = { a: 1, b: 2 };
let obj2 = { b: 3, c: 4 };
let result = _.assign({}, obj1, obj2);
console.log(result); // { a: 1, b: 3, c: 4 }
ব্যাখ্যা: এখানে obj2 এর b প্রোপার্টি obj1 এর b প্রোপার্টি উপরে অদলবদল করে কপি হয়েছে। _.assign() মূলত শেষের অবজেক্টের প্রোপার্টি প্রথমের অবজেক্টে ওভাররাইট (overwrite) করে।
২. _.merge() এর ব্যবহার
_.merge() ফাংশনটি দুটি বা তার বেশি অবজেক্টকে মার্জ করে, তবে এটি গভীর কপি (deep copy) তৈরি করে। অর্থাৎ, যদি অবজেক্টগুলির কোনো ভ্যালু আরেকটি অবজেক্ট বা অ্যারে হয়, তাহলে সেই ভ্যালুগুলোও কপি হবে, শুধুমাত্র রেফারেন্স নয়।
সাধারণ সিনট্যাক্স:
_.merge(object, ...sources);
- object: মূল অবজেক্ট, যেটিতে অন্যান্য অবজেক্টের প্রোপার্টি মার্জ হবে।
- sources: এক বা একাধিক অবজেক্ট যেগুলোর প্রোপার্টি মূল অবজেক্টে মার্জ হবে।
উদাহরণ:
const _ = require('lodash');
let obj1 = { a: 1, b: { x: 10, y: 20 } };
let obj2 = { b: { y: 30, z: 40 }, c: 3 };
let result = _.merge({}, obj1, obj2);
console.log(result); // { a: 1, b: { x: 10, y: 30, z: 40 }, c: 3 }
ব্যাখ্যা: _.merge() ভ্যালুগুলোকে গভীরভাবে মার্জ করে, অর্থাৎ b অবজেক্টের ভ্যালু যেমন { x: 10, y: 30, z: 40 } তৈরি করেছে। এটি b এর ভ্যালু কপি করতে গিয়ে পুরানো ভ্যালু (যেমন y: 20) এবং নতুন ভ্যালু (যেমন y: 30) একত্রিত করেছে।
৩. _.omit() এর ব্যবহার
_.omit() ফাংশনটি একটি অবজেক্ট থেকে নির্দিষ্ট প্রোপার্টি বা কী বাদ (omit) দেয় এবং নতুন একটি অবজেক্ট রিটার্ন করে। এটি মূল অবজেক্টটি পরিবর্তন করে না।
সাধারণ সিনট্যাক্স:
_.omit(object, paths);
- object: মূল অবজেক্ট, থেকে যেগুলোর প্রোপার্টি বাদ দেওয়া হবে।
- paths: যেসব প্রোপার্টি বাদ দিতে চান তাদের নামের একটি অ্যারে।
উদাহরণ:
const _ = require('lodash');
let person = { name: 'John', age: 30, city: 'New York' };
let result = _.omit(person, ['age']);
console.log(result); // { name: 'John', city: 'New York' }
ব্যাখ্যা: এখানে _.omit() ফাংশনটি age প্রোপার্টি বাদ দিয়ে নতুন একটি অবজেক্ট তৈরি করেছে। মূল অবজেক্টে কোনো পরিবর্তন হয়নি।
_.assign(), _.merge(), এবং _.omit() এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | _.assign() | _.merge() | _.omit() |
|---|---|---|---|
| কপি ধরনের ধরন | শ্যালো কপি (shallow copy) | গভীর কপি (deep copy) | নতুন অবজেক্ট তৈরি, কিছু প্রোপার্টি বাদ দিয়ে |
| প্রোপার্টি মার্জ | সরাসরি মান কপি করে এবং শেষের মান ওভাররাইট করে | অবজেক্টের গভীর স্তরের প্রোপার্টি মার্জ করে | প্রোপার্টি বাদ দেওয়ার জন্য ব্যবহৃত হয় |
| প্যারামিটার | একটি অবজেক্ট এবং একাধিক সোর্স অবজেক্ট | একটি অবজেক্ট এবং একাধিক সোর্স অবজেক্ট | একটি অবজেক্ট এবং যে প্রোপার্টি বাদ দিতে হবে তার নাম |
| মুল অবজেক্টে পরিবর্তন হয় কি? | হ্যাঁ, মূল অবজেক্ট পরিবর্তিত হয় | হ্যাঁ, মূল অবজেক্ট পরিবর্তিত হয় | না, মূল অবজেক্ট অপরিবর্তিত থাকে |
উপসংহার
_.assign(): এটি শ্যালো কপি করে এবং শুধুমাত্র সরাসরি প্রোপার্টি কপি করে, তবে গভীর অবজেক্টগুলোর কপি করা হয় না।_.merge(): এটি গভীর কপি করে এবং অবজেক্টের ভিতরের ভ্যালুগুলোও মার্জ করে।_.omit(): এটি একটি নতুন অবজেক্ট তৈরি করে, যেখানে কিছু নির্দিষ্ট প্রোপার্টি বাদ দেওয়া হয়।
এই তিনটি ফাংশন Lodash এর শক্তিশালী টুল, যা JavaScript অবজেক্ট ম্যানিপুলেশনকে আরও সহজ এবং কার্যকরী করে তোলে।
Lodash লাইব্রেরি JavaScript এর objects এর সাথে কাজ করার জন্য অনেক শক্তিশালী utility functions সরবরাহ করে। এগুলোর মাধ্যমে আপনি objects এর properties সহজেই পরিচালনা করতে পারেন, যেমন একটি property খুঁজে বের করা, property এর মান পরিবর্তন করা, object এর মধ্যে নতুন property যোগ করা, এবং আরও অনেক কিছু। নিচে Lodash দিয়ে objects এর মধ্যে property manipulation এর কিছু জনপ্রিয় ফাংশন আলোচনা করা হলো।
১. _.get() ফাংশন
_.get() ফাংশনটি একটি object থেকে নির্দিষ্ট property এর মান বের করতে ব্যবহৃত হয়। এটি যদি property পাওয়া না যায়, তবে আপনি একটি default value দিতে পারেন যা রিটার্ন হবে।
Syntax:
_.get(object, path, [defaultValue]);
- object: Object যেটি থেকে property মান বের করতে হবে।
- path: property এর path, এটি একটি string বা array হতে পারে।
- defaultValue: (Optional) যদি property পাওয়া না যায়, তাহলে এটি রিটার্ন হবে।
উদাহরণ:
const _ = require('lodash');
let user = { 'name': 'John', 'address': { 'city': 'New York' } };
// city property এর মান পাওয়া
let city = _.get(user, 'address.city');
console.log(city); // "New York"
// যদি address.property পাওয়া না যায়, তবে default value দিবে
let country = _.get(user, 'address.country', 'USA');
console.log(country); // "USA"
২. _.set() ফাংশন
_.set() ফাংশনটি একটি object এর মধ্যে নির্দিষ্ট path এ property যোগ বা পরিবর্তন করতে ব্যবহৃত হয়।
Syntax:
_.set(object, path, value);
- object: Object যেটিতে property যোগ বা পরিবর্তন করতে হবে।
- path: property এর path, এটি একটি string বা array হতে পারে।
- value: নতুন মান যা property এ সেট করতে হবে।
উদাহরণ:
const _ = require('lodash');
let user = { 'name': 'John' };
// address.city property যোগ করা
_.set(user, 'address.city', 'Los Angeles');
console.log(user); // { name: 'John', address: { city: 'Los Angeles' } }
// address.country property পরিবর্তন করা
_.set(user, 'address.country', 'USA');
console.log(user); // { name: 'John', address: { city: 'Los Angeles', country: 'USA' } }
এখানে _.set() ফাংশনটি object এর মধ্যে নতুন properties যোগ করেছে বা পূর্বের properties এর মান পরিবর্তন করেছে।
৩. _.has() ফাংশন
_.has() ফাংশনটি একটি object এ নির্দিষ্ট property আছে কিনা তা চেক করে।
Syntax:
_.has(object, path);
- object: Object যেটিতে property চেক করতে হবে।
- path: property এর path, এটি একটি string বা array হতে পারে।
উদাহরণ:
const _ = require('lodash');
let user = { 'name': 'John', 'address': { 'city': 'New York' } };
// address.city property আছে কিনা চেক করা
let hasCity = _.has(user, 'address.city');
console.log(hasCity); // true
// address.country property আছে কিনা চেক করা
let hasCountry = _.has(user, 'address.country');
console.log(hasCountry); // false
এখানে _.has() ফাংশনটি চেক করেছে যে address.city এবং address.country properties গুলো আছে কিনা।
৪. _.omit() ফাংশন
_.omit() ফাংশনটি একটি object থেকে নির্দিষ্ট properties বাদ দিতে ব্যবহৃত হয়। এটি নতুন একটি object রিটার্ন করে যা মূল object থেকে নির্দিষ্ট properties বাদ দেওয়া থাকে।
Syntax:
_.omit(object, [paths]);
- object: Object যেটি থেকে properties বাদ দিতে হবে।
- paths: properties এর নাম বা path যেগুলি বাদ দিতে হবে।
উদাহরণ:
const _ = require('lodash');
let user = { 'name': 'John', 'age': 30, 'address': { 'city': 'New York' } };
// 'age' property বাদ দেওয়া
let userWithoutAge = _.omit(user, ['age']);
console.log(userWithoutAge); // { name: 'John', address: { city: 'New York' } }
এখানে _.omit() ফাংশনটি age property বাদ দিয়েছে এবং একটি নতুন object রিটার্ন করেছে।
৫. _.pick() ফাংশন
_.pick() ফাংশনটি একটি object থেকে শুধুমাত্র নির্দিষ্ট properties নির্বাচন করতে ব্যবহৃত হয়। এটি একটি নতুন object রিটার্ন করে যা শুধু নির্বাচন করা properties ধারণ করে।
Syntax:
_.pick(object, [paths]);
- object: Object যেটি থেকে properties নির্বাচন করতে হবে।
- paths: properties এর নাম বা path যেগুলি নির্বাচন করতে হবে।
উদাহরণ:
const _ = require('lodash');
let user = { 'name': 'John', 'age': 30, 'address': { 'city': 'New York' } };
// শুধুমাত্র 'name' এবং 'address' properties নির্বাচন করা
let selectedUser = _.pick(user, ['name', 'address']);
console.log(selectedUser); // { name: 'John', address: { city: 'New York' } }
এখানে _.pick() ফাংশনটি শুধু name এবং address properties নির্বাচন করে একটি নতুন object রিটার্ন করেছে।
৬. _.update() ফাংশন
_.update() ফাংশনটি একটি object এর property এর মান আপডেট করতে ব্যবহৃত হয়, একটি নির্দিষ্ট path অনুসারে।
Syntax:
_.update(object, path, updater);
- object: Object যেটির property আপডেট করতে হবে।
- path: property এর path যেটি আপডেট করতে হবে।
- updater: একটি ফাংশন যা property এর মান আপডেট করবে।
উদাহরণ:
const _ = require('lodash');
let user = { 'name': 'John', 'age': 30 };
// age property আপডেট করা
_.update(user, 'age', (n) => n + 1);
console.log(user); // { name: 'John', age: 31 }
এখানে _.update() ফাংশনটি age property এর মান 1 বৃদ্ধি করেছে।
উপসংহার
Lodash এর মাধ্যমে objects এর properties নিয়ে কাজ করা অনেক সহজ এবং দক্ষ হয়ে ওঠে। _.get(), _.set(), _.has(), _.omit(), _.pick(), এবং _.update() এর মতো ফাংশনগুলো আপনার object manipulation কে আরও দ্রুত এবং কার্যকরী করে তোলে। এগুলোর মাধ্যমে আপনি সহজেই property যোগ, পরিবর্তন, বা বাদ দিতে পারবেন, এবং আপনার কোডকে আরও পরিষ্কার এবং ব্যবস্থাপনাযোগ্য করতে পারবেন।
Lodash এর _.get(), _.set(), এবং _.has() ফাংশনগুলি nested object গুলির সাথে কাজ করার জন্য অত্যন্ত শক্তিশালী টুল। এগুলি আপনাকে object এর মধ্যে গভীর nested value পড়া, সেট করা এবং চেক করার কাজগুলো সহজে করতে সাহায্য করে। এই ফাংশনগুলি ব্যবহার করলে আপনি সহজেই complex data structures পরিচালনা করতে পারবেন।
১. _.get() – Nested Value পড়া
_.get() ফাংশনটি একটি nested object থেকে একটি value পড়তে ব্যবহৃত হয়, এবং এটি যদি নির্দিষ্ট path এর value না পায় তবে একটি default value রিটার্ন করে। এটি nested data structures এর সাথে কাজ করার জন্য খুবই উপকারী।
Syntax:
_.get(object, path, [defaultValue])
- object: যার মধ্যে থেকে value পড়তে হবে।
- path: যে path এ value রয়েছে (string বা array হিসেবে দেওয়া যায়)।
- [defaultValue]: optional parameter, যা রিটার্ন করা হবে যদি path এর value না পাওয়া যায়।
উদাহরণ:
const _ = require('lodash');
let user = {
name: 'John',
address: {
street: '123 Main St',
city: 'New York',
zip: {
code: '10001',
area: 'Manhattan'
}
}
};
// Nested value get করা
let city = _.get(user, 'address.city');
console.log(city); // 'New York'
// Non-existing value get করা, default value সহ
let country = _.get(user, 'address.country', 'USA');
console.log(country); // 'USA'
// Nested object থেকে deeper level value get করা
let zipCode = _.get(user, 'address.zip.code');
console.log(zipCode); // '10001'
// Default value সহ non-existing deep path get করা
let state = _.get(user, 'address.state', 'NY');
console.log(state); // 'NY'
এখানে, _.get() ব্যবহার করে আমরা user object এর মধ্যে nested value সহজেই access করেছি, এবং যদি কোনো value না পাওয়া যেতো, তবে defaultValue প্রদান করা হয়েছিল।
২. _.set() – Nested Value সেট করা
_.set() ফাংশনটি nested object এর মধ্যে একটি নতুন value সেট করার জন্য ব্যবহৃত হয়। এটি নির্দিষ্ট path অনুযায়ী object এর value আপডেট করে।
Syntax:
_.set(object, path, value)
- object: যার মধ্যে value সেট করতে হবে।
- path: যে path তে value সেট করতে হবে (string বা array হিসেবে দেওয়া যায়)।
- value: যে value সেট করতে হবে।
উদাহরণ:
let user = {
name: 'John',
address: {
street: '123 Main St',
city: 'New York',
zip: {
code: '10001',
area: 'Manhattan'
}
}
};
// Nested value set করা
_.set(user, 'address.city', 'Los Angeles');
console.log(user.address.city); // 'Los Angeles'
// New nested path তে value set করা
_.set(user, 'address.zip.area', 'Hollywood');
console.log(user.address.zip.area); // 'Hollywood'
// Deep nested path তে নতুন value সেট করা
_.set(user, 'address.zip.code', '90001');
console.log(user.address.zip.code); // '90001'
এখানে, _.set() ব্যবহার করে আমরা user object এর nested values আপডেট করেছি এবং নতুন path গুলোতেও value সেট করেছি।
৩. _.has() – Path Exists কিনা চেক করা
_.has() ফাংশনটি একটি object এর মধ্যে নির্দিষ্ট path রয়েছে কিনা তা চেক করার জন্য ব্যবহৃত হয়। এটি boolean রিটার্ন করে: true যদি path থাকে এবং false যদি না থাকে।
Syntax:
_.has(object, path)
- object: যে object এর মধ্যে path চেক করতে হবে।
- path: যে path চেক করতে হবে (string বা array হিসেবে দেওয়া যায়)।
উদাহরণ:
let user = {
name: 'John',
address: {
street: '123 Main St',
city: 'New York',
zip: {
code: '10001',
area: 'Manhattan'
}
}
};
// Path exists কিনা চেক করা
let hasStreet = _.has(user, 'address.street');
console.log(hasStreet); // true
let hasCountry = _.has(user, 'address.country');
console.log(hasCountry); // false
// Nested path exists কিনা চেক করা
let hasZipCode = _.has(user, 'address.zip.code');
console.log(hasZipCode); // true
let hasArea = _.has(user, 'address.zip.area');
console.log(hasArea); // true
এখানে, _.has() ব্যবহার করে আমরা object এর মধ্যে একটি নির্দিষ্ট path (বা nested path) আছে কিনা তা চেক করেছি।
উপসংহার
Lodash এর _.get(), _.set(), এবং _.has() ফাংশনগুলি আপনাকে nested object এর সাথে সহজে কাজ করার সুবিধা প্রদান করে। _.get() দিয়ে আপনি একটি nested value পড়তে পারেন, _.set() দিয়ে আপনি nested value আপডেট বা সেট করতে পারেন, এবং _.has() দিয়ে আপনি চেক করতে পারেন যে কোনো path object এর মধ্যে আছে কিনা। এই ফাংশনগুলির মাধ্যমে আপনি object গুলির মধ্যে ডেটা পরিচালনা এবং ম্যানিপুলেট করা আরও সহজ ও নির্ভরযোগ্য করতে পারেন।
Lodash একটি শক্তিশালী JavaScript লাইব্রেরি যা object manipulation এর জন্য অনেক ফাংশন সরবরাহ করে। এটি বিশেষভাবে key-value পেয়ার পরিচালনা (management) করার জন্য অনেক কার্যকরী এবং ব্যবহারযোগ্য ফাংশন প্রদান করে। এখানে Lodash এর কিছু গুরুত্বপূর্ণ ফাংশন নিয়ে আলোচনা করা হলো যা object এর key-value পেয়ার পরিচালনা করতে সাহায্য করে।
১. _.get() – Value Retrieve করা
_.get() ফাংশনটি একটি object থেকে নির্দিষ্ট key এর value বের করতে ব্যবহৃত হয়। এটি নিরাপদভাবে nested objects থেকে value বের করার সুবিধা দেয়। যদি key না থাকে, এটি একটি ডিফল্ট মান রিটার্ন করে।
ব্যবহার:
const _ = require('lodash');
let object = { a: { b: { c: 3 } } };
let value = _.get(object, 'a.b.c'); // value হবে 3
console.log(value);
let defaultValue = _.get(object, 'a.b.d', 'default'); // value হবে 'default' (যেহেতু 'd' key নেই)
console.log(defaultValue);
এটি নিরাপদভাবে nested object থেকে value রিটার্ন করে, এবং যদি key না থাকে তবে ডিফল্ট মান রিটার্ন করে।
২. _.set() – Object এ Key-Value পেয়ার সেট করা
_.set() ফাংশনটি object এর একটি key এর value সেট করতে ব্যবহৃত হয়। এটি nested object এর key-এ value সেট করার জন্যও ব্যবহার করা যেতে পারে।
ব্যবহার:
let object = { a: { b: 2 } };
_.set(object, 'a.b', 3); // 'a.b' এর মান পরিবর্তন হবে 3
console.log(object); // { a: { b: 3 } }
_.set(object, 'a.c.d', 4); // নতুন nested key-value পেয়ার যুক্ত করা
console.log(object); // { a: { b: 3, c: { d: 4 } } }
এটি object এর key এর value পরিবর্তন করতে ব্যবহৃত হয় বা নতুন key-value পেয়ার যুক্ত করতে সাহায্য করে।
৩. _.has() – Key উপস্থিতি চেক করা
_.has() ফাংশনটি একটি object এ নির্দিষ্ট key এর উপস্থিতি চেক করতে ব্যবহৃত হয়। এটি true রিটার্ন করে যদি key object এ থাকে, এবং false রিটার্ন করে যদি key না থাকে।
ব্যবহার:
let object = { a: 1, b: 2 };
console.log(_.has(object, 'a')); // true (কারণ 'a' key আছে)
console.log(_.has(object, 'c')); // false (কারণ 'c' key নেই)
এটি object এর key উপস্থিতি দ্রুত চেক করার জন্য উপকারী।
৪. _.omit() – Key-Value পেয়ার অপসারণ করা
_.omit() ফাংশনটি একটি object থেকে নির্দিষ্ট key(s) অপসারণ করতে ব্যবহৃত হয়। এটি নতুন object রিটার্ন করে যা মূল object থেকে নির্দিষ্ট key(s) বাদ দিয়ে তৈরি হয়।
ব্যবহার:
let object = { a: 1, b: 2, c: 3 };
let newObject = _.omit(object, ['b', 'c']);
console.log(newObject); // { a: 1 } (এখানে 'b' এবং 'c' key বাদ দেওয়া হয়েছে)
এটি object থেকে key বা key-value পেয়ার অপসারণ করার জন্য একটি খুবই কার্যকরী পদ্ধতি।
৫. _.pick() – শুধুমাত্র নির্দিষ্ট Key-Value পেয়ার নির্বাচন করা
_.pick() ফাংশনটি একটি object থেকে নির্দিষ্ট key(s) নির্বাচন করতে ব্যবহৃত হয়। এটি একটি নতুন object রিটার্ন করে যার মধ্যে শুধুমাত্র চিহ্নিত key-value পেয়ার থাকে।
ব্যবহার:
let object = { a: 1, b: 2, c: 3 };
let pickedObject = _.pick(object, ['a', 'c']);
console.log(pickedObject); // { a: 1, c: 3 }
এটি object থেকে নির্দিষ্ট key(s) নির্বাচন করে একটি নতুন object তৈরি করতে ব্যবহৃত হয়।
৬. _.update() – Object Key এর Value আপডেট করা
_.update() ফাংশনটি একটি object এর নির্দিষ্ট key এর value আপডেট করতে ব্যবহৃত হয়। এটি key এর বর্তমান value কে একটি callback function এর মাধ্যমে পরিবর্তন করে।
ব্যবহার:
let object = { a: 1, b: 2, c: 3 };
_.update(object, 'b', (n) => n * 2); // 'b' key এর value 2 থেকে 4 হবে
console.log(object); // { a: 1, b: 4, c: 3 }
এটি একটি key এর value আপডেট করার জন্য খুবই সহজ এবং কার্যকরী পদ্ধতি।
৭. _.toPairs() – Object এর Key-Value পেয়ার অ্যারে হিসেবে রূপান্তর করা
_.toPairs() ফাংশনটি একটি object এর key-value পেয়ার গুলিকে একটি অ্যারে হিসেবে রূপান্তর করে। এটি প্রতিটি key-value পেয়ারকে একটি sub-array হিসাবে রিটার্ন করে।
ব্যবহার:
let object = { a: 1, b: 2, c: 3 };
let pairs = _.toPairs(object);
console.log(pairs); // [['a', 1], ['b', 2], ['c', 3]]
এটি object এর key-value পেয়ার গুলিকে অ্যারে হিসেবে রূপান্তর করতে সাহায্য করে, যা পরে অন্যান্য কাজের জন্য ব্যবহার করা যেতে পারে।
৮. _.invert() – Object Key এবং Value বিপরীত করা
_.invert() ফাংশনটি একটি object এর key এবং value একে অপরের সাথে বিপরীত করে। এতে object এর value গুলো key হয়ে যায় এবং key গুলো value হয়ে যায়।
ব্যবহার:
let object = { a: 1, b: 2, c: 3 };
let invertedObject = _.invert(object);
console.log(invertedObject); // { '1': 'a', '2': 'b', '3': 'c' }
এটি object এর key-value পেয়ার বিপরীত করার জন্য ব্যবহৃত হয়।
উপসংহার
Lodash এর key-value পেয়ার ম্যানেজমেন্ট ফাংশনগুলি object এর উপর কাজ করতে অনেক সহজ এবং দ্রুত করে তোলে। _.get(), _.set(), _.has(), _.omit(), _.pick(), _.update(), _.toPairs(), এবং _.invert() এর মতো ফাংশনগুলি ব্যবহার করে আপনি object manipulation এর কাজগুলো অনেক সহজেই সম্পন্ন করতে পারবেন। Lodash এর এই শক্তিশালী ফাংশনগুলির মাধ্যমে আপনার কোড আরও পরিষ্কার এবং কার্যকরী হবে।
Read more