Lodash লাইব্রেরি শুধুমাত্র সাধারণ Array এবং Object ম্যানিপুলেশনের জন্য নয়, বরং আরো অনেক উন্নত ফাংশন সরবরাহ করে যা ডেভেলপারদের কাজ অনেক সহজ এবং দ্রুত করে। এই গাইডে Lodash এর কিছু Advanced Methods আলোচনা করা হবে যা Array এবং Object এর মধ্যে ডেটা ম্যানিপুলেশনের জন্য ব্যবহৃত হয়।
১. _.merge() – Objects মার্জ (combine) করা
_.merge() ফাংশনটি দুটি বা তার বেশি Object কে একত্রিত (merge) করে। এটি nested objects কে merge করতে পারে, অর্থাৎ একটি Object এর ভিতরে থাকা Object গুলোকেও merge করে।
উদাহরণ:
const _ = require('lodash');
let object1 = { a: 1, b: { x: 1, y: 2 } };
let object2 = { b: { y: 3, z: 4 }, c: 5 };
let mergedObject = _.merge(object1, object2);
console.log(mergedObject);
// Output: { a: 1, b: { x: 1, y: 3, z: 4 }, c: 5 }
এখানে _.merge() দুটি Object কে মার্জ করেছে এবং nested object গুলোকেও একত্রিত করেছে।
২. _.cloneDeep() – Object বা Array এর গভীর কপি তৈরি করা
_.cloneDeep() ফাংশনটি একটি Object বা Array এর গভীর কপি তৈরি করে। এটি shallow copy এর থেকে আলাদা কারণ এটি nested object বা array গুলোকেও কপি করে এবং মূল object বা array কে অপরিবর্তিত রাখে।
উদাহরণ:
const _ = require('lodash');
let object = { a: 1, b: { x: 2, y: 3 } };
let deepCopy = _.cloneDeep(object);
deepCopy.b.x = 5;
console.log(object); // { a: 1, b: { x: 2, y: 3 } }
console.log(deepCopy); // { a: 1, b: { x: 5, y: 3 } }
এখানে _.cloneDeep() ফাংশনটি একটি গভীর কপি তৈরি করেছে, ফলে মূল object অপরিবর্তিত থেকে গেছে।
৩. _.uniqBy() – Uniq elements নির্ধারণ করা Object Property এর ভিত্তিতে
_.uniqBy() ফাংশনটি একটি Array থেকে Uniq elements নির্ধারণ করতে ব্যবহৃত হয়, যেখানে প্রতিটি element কে একটি নির্দিষ্ট property এর ভিত্তিতে uniq করা হয়।
উদাহরণ:
const _ = require('lodash');
let array = [
{ 'id': 1, 'name': 'John' },
{ 'id': 2, 'name': 'Jane' },
{ 'id': 1, 'name': 'John' },
{ 'id': 3, 'name': 'Jake' }
];
let uniqueArray = _.uniqBy(array, 'id');
console.log(uniqueArray);
// Output: [ { id: 1, name: 'John' }, { id: 2, name: 'Jane' }, { id: 3, name: 'Jake' } ]
এখানে _.uniqBy() ফাংশনটি id প্রপার্টির ভিত্তিতে Uniq elements বের করেছে, ফলে duplicate id: 1 এন্ট্রি শুধুমাত্র একবার রাখা হয়েছে।
৪. _.sortBy() – Array কে Sort করা একটি বা একাধিক criteria এর ভিত্তিতে
_.sortBy() ফাংশনটি একটি Array কে একটি নির্দিষ্ট criteria এর ভিত্তিতে sort করতে ব্যবহৃত হয়। আপনি একাধিক criteria দিয়েও sort করতে পারেন।
উদাহরণ:
const _ = require('lodash');
let array = [
{ 'name': 'John', 'age': 28 },
{ 'name': 'Jane', 'age': 32 },
{ 'name': 'Jake', 'age': 22 }
];
let sortedArray = _.sortBy(array, ['age', 'name']);
console.log(sortedArray);
// Output: [ { name: 'Jake', age: 22 }, { name: 'John', age: 28 }, { name: 'Jane', age: 32 } ]
এখানে _.sortBy() ফাংশনটি প্রথমে age এর ভিত্তিতে এবং পরে name এর ভিত্তিতে array কে sort করেছে।
৫. _.groupBy() – Array কে Group করা একটি প্রপার্টি বা ফাংশনের ভিত্তিতে
_.groupBy() ফাংশনটি একটি array কে group করে একটি নির্দিষ্ট প্রপার্টি বা function এর ভিত্তিতে। এটি array কে object এ রূপান্তর করে, যেখানে object এর key হবে group এর মান এবং value হবে group এর সকল element।
উদাহরণ:
const _ = require('lodash');
let array = [
{ 'name': 'John', 'age': 28 },
{ 'name': 'Jane', 'age': 32 },
{ 'name': 'Jake', 'age': 22 }
];
let grouped = _.groupBy(array, 'age');
console.log(grouped);
// Output: { '22': [ { name: 'Jake', age: 22 } ], '28': [ { name: 'John', age: 28 } ], '32': [ { name: 'Jane', age: 32 } ] }
এখানে _.groupBy() ফাংশনটি age এর ভিত্তিতে array এর elements কে group করে।
৬. _.pick() – Object থেকে নির্দিষ্ট প্রপার্টি গুলি নির্বাচন করা
_.pick() ফাংশনটি একটি Object থেকে শুধুমাত্র নির্দিষ্ট প্রপার্টি গুলি নির্বাচন করতে ব্যবহৃত হয়।
উদাহরণ:
const _ = require('lodash');
let object = { 'name': 'John', 'age': 28, 'address': '123 Street' };
let pickedObject = _.pick(object, ['name', 'age']);
console.log(pickedObject);
// Output: { name: 'John', age: 28 }
এখানে _.pick() ফাংশনটি name এবং age প্রপার্টি গুলিকে নির্বাচন করেছে এবং অন্যসব প্রপার্টি বাদ দিয়েছে।
৭. _.omit() – Object থেকে নির্দিষ্ট প্রপার্টি বাদ দেওয়া
_.omit() ফাংশনটি একটি Object থেকে নির্দিষ্ট প্রপার্টি বাদ দিতে ব্যবহৃত হয়।
উদাহরণ:
const _ = require('lodash');
let object = { 'name': 'John', 'age': 28, 'address': '123 Street' };
let omittedObject = _.omit(object, ['address']);
console.log(omittedObject);
// Output: { name: 'John', age: 28 }
এখানে _.omit() ফাংশনটি address প্রপার্টি বাদ দিয়েছে এবং বাকি প্রপার্টি গুলো রেখেছে।
৮. _.flattenDeep() – মাল্টি-ডিমেনশনাল অ্যারে এক স্তরে রূপান্তর করা
_.flattenDeep() ফাংশনটি একটি মাল্টি-ডিমেনশনাল অ্যারেকে পুরোপুরি এক স্তরে রূপান্তর করে।
উদাহরণ:
const _ = require('lodash');
let nestedArray = [1, [2, [3, [4]]]];
let flattenedArray = _.flattenDeep(nestedArray);
console.log(flattenedArray);
// Output: [1, 2, 3, 4]
এখানে _.flattenDeep() ফাংশনটি একটি মাল্টি-ডিমেনশনাল অ্যারেকে পুরোপুরি এক স্তরে রূপান্তর করেছে।
উপসংহার
Lodash এর Advanced Methods গুলি Array এবং Object ম্যানিপুলেশনের ক্ষেত্রে অনেক শক্তিশালী এবং কার্যকরী ফাংশন প্রদান করে। আপনি merge, cloneDeep, sortBy, groupBy, pick, omit এবং flattenDeep এর মতো ফাংশনগুলি ব্যবহার করে জটিল ডেটা ম্যানিপুলেশন খুব সহজে করতে পারেন। এই ফাংশনগুলো আপনার JavaScript কোডকে আরও পরিষ্কার, দ্রুত, এবং কার্যকরী করে তোলে।
Lodash লাইব্রেরিতে _.clone() এবং _.cloneDeep() ফাংশন দুটি Objects এবং Arrays কপি করার জন্য ব্যবহৃত হয়। এই ফাংশন দুটি গুরুত্বপূর্ণ পার্থক্য রয়েছে, যা বুঝতে সাহায্য করবে কোন পরিস্থিতিতে কোনটি ব্যবহার করবেন।
১. _.clone() – শ্যালো কপি (Shallow Copy)
_.clone() ফাংশনটি একটি শ্যালো কপি তৈরি করে। এর মানে হল, যে object বা array কপি করা হয়, তা কেবলমাত্র প্রথম স্তরের উপাদানগুলির কপি তৈরি করবে। যদি কোনো nested object বা array থাকে, তবে তা মূল object বা array এর সাথে রেফারেন্স হিসেবে থাকবে, অর্থাৎ nested elements গুলি পরিবর্তন করলে মূল object বা array তেও পরিবর্তন হবে।
সিনট্যাক্স:
_.clone(value)
- value: যে object বা array কপি করতে চান।
উদাহরণ:
const _ = require('lodash');
let original = { a: 1, b: { c: 2 } };
// শ্যালো কপি তৈরি করা
let shallowCopy = _.clone(original);
// শ্যালো কপির প্রথম স্তরের উপাদান পরিবর্তন
shallowCopy.a = 10;
// শ্যালো কপির nested object এর উপাদান পরিবর্তন
shallowCopy.b.c = 20;
console.log(original); // { a: 1, b: { c: 20 } }
console.log(shallowCopy); // { a: 10, b: { c: 20 } }
ব্যাখ্যা: এখানে _.clone() ব্যবহার করে শ্যালো কপি তৈরি করা হয়েছে। আপনি দেখতে পাচ্ছেন যে, যখন nested object (b) এর মধ্যে পরিবর্তন করা হয়েছে, তখন মূল object-এও পরিবর্তন এসেছে, কারণ _.clone() শ্যালো কপি তৈরি করে এবং nested object গুলির মধ্যে রেফারেন্স শেয়ার করা হয়।
২. _.cloneDeep() – গভীর কপি (Deep Copy)
_.cloneDeep() ফাংশনটি একটি গভীর কপি তৈরি করে। এটি object বা array এর সকল স্তরের উপাদান গুলিকে কপি করে, অর্থাৎ nested objects বা arrays-ও নতুন কপি হয়ে যাবে। এর ফলে, মূল object বা array তে কোনো পরিবর্তন না ঘটলেও কপি করা object বা array তে কোনো পরিবর্তন হলে মূল object বা array অপরিবর্তিত থাকবে।
সিনট্যাক্স:
_.cloneDeep(value)
- value: যে object বা array কপি করতে চান।
উদাহরণ:
const _ = require('lodash');
let original = { a: 1, b: { c: 2 } };
// গভীর কপি তৈরি করা
let deepCopy = _.cloneDeep(original);
// গভীর কপির প্রথম স্তরের উপাদান পরিবর্তন
deepCopy.a = 10;
// গভীর কপির nested object এর উপাদান পরিবর্তন
deepCopy.b.c = 20;
console.log(original); // { a: 1, b: { c: 2 } }
console.log(deepCopy); // { a: 10, b: { c: 20 } }
ব্যাখ্যা: এখানে _.cloneDeep() ব্যবহার করে গভীর কপি তৈরি করা হয়েছে। আপনি দেখতে পাচ্ছেন যে, গভীর কপির nested object (b) পরিবর্তন হলেও, মূল object অপরিবর্তিত রয়েছে, কারণ _.cloneDeep() পুরো object এর প্রতিটি স্তরের কপি তৈরি করে।
৩. _.clone() এবং _.cloneDeep() এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | _.clone() | _.cloneDeep() |
|---|---|---|
| কপি ধরনের | শ্যালো কপি (Shallow Copy) | গভীর কপি (Deep Copy) |
| Nested Object/Array | nested object বা array গুলোর রেফারেন্স শেয়ার করা হয় | nested object বা array গুলির কপি তৈরি করা হয় |
| পারফরম্যান্স | দ্রুত (কারণ শুধুমাত্র প্রথম স্তরের কপি হয়) | কিছুটা ধীর (কারণ সম্পূর্ণ structure কপি হয়) |
| ব্যবহার | যখন nested objects এর পরিবর্তন প্রয়োজন নেই | যখন nested objects ও পরিবর্তন করতে হয় |
৪. কখন _.clone() এবং _.cloneDeep() ব্যবহার করবেন?
_.clone()ব্যবহার করুন যখন আপনার object বা array এর প্রথম স্তরের উপাদানগুলির কপি দরকার এবং nested objects বা arrays গুলির পরিবর্তন দরকার নেই।_.cloneDeep()ব্যবহার করুন যখন আপনি নিশ্চিত হতে চান যে, object বা array এর সব স্তরের উপাদানগুলোর আলাদা কপি তৈরি হবে এবং nested elements গুলির পরিবর্তনও মূল object বা array তে প্রভাব ফেলবে না।
উপসংহার
Lodash এর _.clone() এবং _.cloneDeep() ফাংশন দুটি objects এবং arrays কপি করার জন্য খুবই কার্যকরী। যদি আপনার প্রয়োজন শুধু প্রথম স্তরের কপি, তবে _.clone() ব্যবহার করুন, এবং যদি আপনাকে পুরো object বা array এর প্রতিটি স্তরের কপি দরকার হয়, তবে _.cloneDeep() ব্যবহার করুন। এগুলি কোডে ক্লিয়ারিটি এবং নিরাপত্তা নিশ্চিত করতে সাহায্য করে, বিশেষত যখন nested objects বা arrays সাথে কাজ করছেন।
Lodash এর _.isEqual() ফাংশনটি দুটি value বা object এর মধ্যে গভীর (deep) সমতা (equality) পরীক্ষা করতে ব্যবহৃত হয়। এটি শুধু shallow (পৃষ্ঠতল) সমতার তুলনা না করে, বরং nested objects বা arrays এর মধ্যে সমস্ত value এবং structure পরীক্ষা করে। অর্থাৎ, দুটি object বা array এর ভিতরের সমস্ত প্রপার্টি বা উপাদানও তুলনা করা হয়, এবং যদি সবকিছু একেবারে সমান হয়, তবে এটি true রিটার্ন করে।
১. _.isEqual() ফাংশন এর ব্যবহার
_.isEqual() ফাংশনটি দুটি value বা object এর মধ্যে deep equality পরীক্ষা করে। এটি nested objects বা arrays এর মধ্যে প্রতিটি স্তরের value গুলি তুলনা করে।
Syntax:
_.isEqual(value, other);
- value: প্রথম value (object বা array) যেটি পরীক্ষা করতে হবে।
- other: দ্বিতীয় value (object বা array) যেটির সাথে প্রথম value তুলনা করা হবে।
উদাহরণ:
const _ = require('lodash');
let obj1 = { a: 1, b: { x: 10, y: 20 } };
let obj2 = { a: 1, b: { x: 10, y: 20 } };
console.log(_.isEqual(obj1, obj2)); // true
let obj3 = { a: 1, b: { x: 10, y: 21 } };
console.log(_.isEqual(obj1, obj3)); // false
ব্যাখ্যা: এখানে, প্রথম উদাহরণে obj1 এবং obj2 দুটি অবজেক্ট একে অপরের সাথে পুরোপুরি সমান, কারণ তাদের প্রতিটি প্রোপার্টি এবং nested value একই। কিন্তু দ্বিতীয় উদাহরণে, obj1 এবং obj3 এর মধ্যে শুধু y এর মান আলাদা হওয়ায়, এটি false রিটার্ন করবে।
২. Arrays এর মধ্যে Deep Equality Check
_.isEqual() শুধুমাত্র objects নয়, arrays এর মধ্যেও deep equality পরীক্ষা করতে সক্ষম।
উদাহরণ:
const _ = require('lodash');
let array1 = [1, 2, [3, 4], { a: 5 }];
let array2 = [1, 2, [3, 4], { a: 5 }];
let array3 = [1, 2, [3, 5], { a: 5 }];
console.log(_.isEqual(array1, array2)); // true
console.log(_.isEqual(array1, array3)); // false
ব্যাখ্যা: এখানে array1 এবং array2 পুরোপুরি সমান, কারণ তাদের ভেতরের সবগুলো উপাদান একে অপরের সাথে পুরোপুরি মিলে যায়। কিন্তু array1 এবং array3 এর মধ্যে [3, 4] এবং [3, 5] এর মধ্যে পার্থক্য রয়েছে, তাই এটি false রিটার্ন করবে।
৩. Objects এবং Arrays মিশ্রিত (Mixed Objects and Arrays) এর মধ্যে Deep Equality Check
Lodash এর _.isEqual() ফাংশনটি মিশ্রিত objects এবং arrays এর মধ্যে equality চেক করতে পারদর্শী।
উদাহরণ:
const _ = require('lodash');
let mixed1 = { a: [1, 2, 3], b: { x: 10, y: 20 } };
let mixed2 = { a: [1, 2, 3], b: { x: 10, y: 20 } };
let mixed3 = { a: [1, 2, 3], b: { x: 10, y: 21 } };
console.log(_.isEqual(mixed1, mixed2)); // true
console.log(_.isEqual(mixed1, mixed3)); // false
ব্যাখ্যা: mixed1 এবং mixed2 দুটি object এবং তাদের মধ্যে nested arrays এবং objects সম্পূর্ণভাবে সমান, তাই এটি true রিটার্ন করে। তবে mixed1 এবং mixed3 এর মধ্যে nested y এর মানের পার্থক্য আছে, তাই এটি false রিটার্ন করবে।
৪. _.isEqual() এর ব্যবহারিক পরিস্থিতি
_.isEqual() সাধারণত নিচের পরিস্থিতিতে ব্যবহৃত হতে পারে:
- Objects এর মধ্যে deep comparison: যখন আপনি দুটি object এর মধ্যে গভীর তুলনা করতে চান এবং নিশ্চিত হতে চান যে তাদের সব প্রোপার্টি এবং nested values একে অপরের সাথে মিলে।
- Arrays এর মধ্যে equality check: যখন আপনি দুটি array এর মধ্যে তুলনা করতে চান এবং দেখতে চান যে তাদের উপাদানগুলির মান এবং কাঠামো একে অপরের সাথে সমান কিনা।
- API Responses চেক করা: যখন API থেকে প্রাপ্ত ডেটা পরীক্ষা করতে চান যে, পূর্ববর্তী response এর সাথে বর্তমান response একে অপরের সাথে সমান কিনা।
- State management: State management এর ক্ষেত্রে, বিশেষ করে React বা Redux এর মত ফ্রেমওয়ার্কে, দুটি state এর মধ্যে deep comparison করার জন্য ব্যবহার করা হয়।
৫. পারফরম্যান্স সংক্রান্ত দিক
_.isEqual() গভীর সমতা চেক করার কারণে এর পারফরম্যান্স কিছুটা কম হতে পারে যখন বড় বা জটিল nested structures এর মধ্যে চেক করতে হয়। যেহেতু এটি প্রতিটি স্তরের value তুলনা করে, তাই এর কার্যকারিতা কিছুটা ধীর হতে পারে, বিশেষ করে বড় ডেটা structures এ।
উপসংহার
Lodash এর _.isEqual() ফাংশনটি অত্যন্ত শক্তিশালী এবং ব্যবহারিকভাবে দুটি object বা array এর মধ্যে deep equality চেক করার জন্য অসাধারণ একটি টুল। এটি objects এবং arrays এর মধ্যে nested values চেক করতে পারে, এবং যদি সবগুলো স্তরের মান একে অপরের সাথে মিলে যায়, তবে এটি true রিটার্ন করে। এটি খুবই উপকারী যখন আপনি complex data structures এর মধ্যে তুলনা করতে চান।
Lodash এর _.flatten() এবং _.flattenDeep() ফাংশনগুলি ব্যবহৃত হয় nested arrays (অথবা array of arrays) কে একক array তে রূপান্তর করার জন্য। এই ফাংশনগুলির মাধ্যমে আপনি সহজেই nested arrays কে flatten করতে পারবেন, যা পরবর্তীতে array manipulation এর কাজে সহজ এবং কার্যকরী হয়ে ওঠে।
১. _.flatten() – Shallow Flattening
_.flatten() ফাংশনটি একটি array এর এক স্তরের (level) nested arrays কে flatten করতে ব্যবহৃত হয়। এটি শুধুমাত্র প্রথম স্তরের nested arrays কে একক array তে রূপান্তরিত করবে, এবং nested arrays এর মধ্যে আরও arrays থাকলে সেগুলিকে সরাসরি flat করবে না।
Syntax:
_.flatten(array);
- array: Flatten করার জন্য যে array টি প্রদান করতে হবে।
উদাহরণ:
const _ = require('lodash');
let nestedArray = [1, [2, 3], [4, 5], [6]];
// Flattening one level deep
let flattenedArray = _.flatten(nestedArray);
console.log(flattenedArray); // [1, 2, 3, 4, 5, 6]
ব্যাখ্যা: এখানে _.flatten() শুধুমাত্র প্রথম স্তরের nested arrays (যেমন [2, 3], [4, 5], [6]) কে flatten করেছে, কিন্তু যদি কোনো array আরও nested থাকে, তবে সেটি ফ্ল্যাট হয়নি।
২. _.flattenDeep() – Deep Flattening
_.flattenDeep() ফাংশনটি একটি array এর সমস্ত স্তরের nested arrays কে flatten করে, অর্থাৎ এটি পুরো nested structure কে একটি একক array তে রূপান্তরিত করে। এই ফাংশনটি যেকোনো স্তরের nested arrays কে full flatten করে দেয়।
Syntax:
_.flattenDeep(array);
- array: Flatten করার জন্য যে array টি প্রদান করতে হবে।
উদাহরণ:
const _ = require('lodash');
let deeplyNestedArray = [1, [2, [3, [4]]], 5];
// Deep flattening the array
let fullyFlattenedArray = _.flattenDeep(deeplyNestedArray);
console.log(fullyFlattenedArray); // [1, 2, 3, 4, 5]
ব্যাখ্যা: _.flattenDeep() সমস্ত স্তরের nested arrays কে fully flatten করেছে এবং একক array তে রূপান্তরিত করেছে। এখানে [3, [4]] এবং [4] এই nested structures সেগুলোর মধ্যে আরও ফ্ল্যাট হয়ে গেছে।
৩. পার্থক্য: _.flatten() vs _.flattenDeep()
| বৈশিষ্ট্য | _.flatten() | _.flattenDeep() |
|---|---|---|
| ফ্ল্যাট করার স্তরের সংখ্যা | শুধুমাত্র এক স্তরের nested arrays | সমস্ত স্তরের nested arrays |
| কীভাবে কাজ করে | শুধুমাত্র এক স্তরের nested arrays কে flat করে | পুরো nested structure কে full flatten করে |
| উদাহরণ | [1, [2, 3], [4, 5]] -> [1, 2, 3, 4, 5] | [1, [2, [3, [4]]], 5] -> [1, 2, 3, 4, 5] |
৪. এটি কেন ব্যবহার করবেন?
- Array Manipulation: যখন আপনার একটি nested array থাকে এবং আপনি এটিকে একটি একক array তে রূপান্তর করতে চান, তখন
_.flatten()বা_.flattenDeep()ব্যবহার করা সহজ এবং কার্যকরী। - Data Cleaning: JSON বা অন্যান্য sources থেকে ডেটা প্রাপ্তির পর যদি nested arrays থাকে, তবে এটি সরাসরি ফ্ল্যাট করা দরকার হতে পারে।
- Performance:
_.flatten()দ্রুত হতে পারে যদি array এর ভিতরে অনেক nested structure না থাকে। যদি array অনেক nested হয়ে থাকে, তবে_.flattenDeep()বেশি উপকারী হবে।
৫. আরও উদাহরণ
উদাহরণ ১: _.flatten() ব্যবহার
const _ = require('lodash');
let nestedArray = [1, [2, 3], [4, [5, 6]], 7];
// Flatten one level deep
let flattenedArray = _.flatten(nestedArray);
console.log(flattenedArray); // [1, 2, 3, 4, [5, 6], 7]
এখানে, _.flatten() শুধুমাত্র এক স্তরের nested array কে ফ্ল্যাট করেছে। [[5, 6]] এখনও nested রয়েছে, কারণ এটি _.flatten() এর সীমিত স্তরের ফ্ল্যাটিংয়ের মধ্যে পড়ে।
উদাহরণ ২: _.flattenDeep() ব্যবহার
const _ = require('lodash');
let deeplyNestedArray = [1, [2, [3, [4, [5]]]]];
// Fully flatten the array
let fullyFlattenedArray = _.flattenDeep(deeplyNestedArray);
console.log(fullyFlattenedArray); // [1, 2, 3, 4, 5]
এখানে, _.flattenDeep() পুরো nested structure কে একক array তে রূপান্তর করেছে, যেখানে সব nested arrays একত্রিত হয়ে গেছে।
উপসংহার
_.flatten(): শুধুমাত্র এক স্তরের nested arrays কে ফ্ল্যাট করে।_.flattenDeep(): সমস্ত স্তরের nested arrays কে সম্পূর্ণভাবে ফ্ল্যাট করে।
এটি যে কোন ধরনের nested array কে একক array তে রূপান্তর করতে সাহায্য করে, এবং ডেটা ম্যানিপুলেশন, ফ্ল্যাটিং, বা ডেটা ক্লিনিং এর কাজগুলোতে কার্যকরী ভূমিকা পালন করে।
Lodash লাইব্রেরির _.keyBy(), _.groupBy(), এবং _.sortBy() ফাংশনগুলি ডেটাকে সংগঠিত এবং সাজানোর জন্য খুবই উপকারী। এগুলি আপনাকে অ্যারে বা অবজেক্টগুলিকে সহজেই একটি নির্দিষ্ট কিপর্যায়ে (key) গ্রুপ এবং সাজাতে সাহায্য করে, যার মাধ্যমে ডেটার বিশ্লেষণ এবং ম্যানিপুলেশন সহজ হয়।
১. _.keyBy() - একটি কিপর্যায়ে ডেটা সংগঠিত করা
_.keyBy() ফাংশনটি একটি অ্যারে বা অবজেক্টের উপাদানগুলোকে একটি নির্দিষ্ট key এর ভিত্তিতে একটি নতুন object এ রূপান্তর করে, যেখানে key হিসেবে নির্দিষ্ট মানের উপর ভিত্তি করে ডেটা সংগঠিত হয়।
সিনট্যাক্স:
_.keyBy(collection, iteratee);
- collection: এটি অ্যারে বা অবজেক্ট হতে পারে।
- iteratee: এটি একটি ফাংশন যা collection এর উপাদানকে যাচাই করে এবং key হিসেবে মান নির্ধারণ করে।
উদাহরণ:
const _ = require('lodash');
let users = [
{ 'user': 'John', 'age': 28 },
{ 'user': 'Jane', 'age': 34 },
{ 'user': 'Jake', 'age': 24 }
];
let keyByUser = _.keyBy(users, 'user');
console.log(keyByUser);
আউটপুট:
{
John: { user: 'John', age: 28 },
Jane: { user: 'Jane', age: 34 },
Jake: { user: 'Jake', age: 24 }
}
ব্যাখ্যা:
এখানে _.keyBy() ফাংশনটি users অ্যারে থেকে প্রত্যেকটি user নামের উপর ভিত্তি করে একটি নতুন object তৈরি করেছে, যেখানে প্রত্যেকটি user হল key এবং মান (value) হচ্ছে সেই user এর সম্পূর্ণ অবজেক্ট।
২. _.groupBy() - ডেটা গ্রুপ করে সংগঠিত করা
_.groupBy() ফাংশনটি একটি অ্যারে বা অবজেক্টের উপাদানগুলোকে একটি নির্দিষ্ট কন্ডিশন বা key এর ভিত্তিতে গ্রুপ করে। এটি একাধিক উপাদানকে একটি নির্দিষ্ট key অনুযায়ী একটি গ্রুপে রূপান্তরিত করে।
সিনট্যাক্স:
_.groupBy(collection, iteratee);
- collection: এটি অ্যারে বা অবজেক্ট হতে পারে।
- iteratee: এটি একটি ফাংশন যা collection এর উপাদানকে যাচাই করে এবং key হিসেবে মান নির্ধারণ করে।
উদাহরণ:
const _ = require('lodash');
let users = [
{ 'user': 'John', 'age': 28 },
{ 'user': 'Jane', 'age': 34 },
{ 'user': 'Jake', 'age': 24 },
{ 'user': 'Jess', 'age': 28 }
];
let groupByAge = _.groupBy(users, 'age');
console.log(groupByAge);
আউটপুট:
{
'24': [ { user: 'Jake', age: 24 } ],
'28': [
{ user: 'John', age: 28 },
{ user: 'Jess', age: 28 }
],
'34': [ { user: 'Jane', age: 34 } ]
}
ব্যাখ্যা:
এখানে, _.groupBy() ফাংশনটি users অ্যারে এর উপাদানগুলোকে age এর ভিত্তিতে গ্রুপ করে। এখানে দেখা যাচ্ছে যে 28 বয়সের জন্য দুটি user এবং 24 এবং 34 বয়সের জন্য এক একটি user রয়েছে।
৩. _.sortBy() - ডেটা সাজানো
_.sortBy() ফাংশনটি একটি অ্যারে বা অবজেক্টের উপাদানগুলোকে একটি নির্দিষ্ট key বা মানের ভিত্তিতে সাজাতে ব্যবহৃত হয়। এটি ascending order তে ডেটা সাজায়।
সিনট্যাক্স:
_.sortBy(collection, iteratee);
- collection: এটি অ্যারে বা অবজেক্ট হতে পারে।
- iteratee: এটি একটি ফাংশন যা collection এর উপাদানকে যাচাই করে এবং key বা মান হিসেবে নির্ধারণ করে।
উদাহরণ:
const _ = require('lodash');
let users = [
{ 'user': 'John', 'age': 28 },
{ 'user': 'Jane', 'age': 34 },
{ 'user': 'Jake', 'age': 24 },
{ 'user': 'Jess', 'age': 28 }
];
let sortedUsers = _.sortBy(users, 'age');
console.log(sortedUsers);
আউটপুট:
[
{ user: 'Jake', age: 24 },
{ user: 'John', age: 28 },
{ user: 'Jess', age: 28 },
{ user: 'Jane', age: 34 }
]
ব্যাখ্যা:
এখানে _.sortBy() ফাংশনটি users অ্যারে কে age এর ভিত্তিতে ascending order এ সাজিয়েছে, যেখানে প্রথমে ২৪ বয়সের user, তারপর ২৮ এবং সবশেষে ৩৪ বয়সের user এসেছে।
উপসংহার
Lodash এর _.keyBy(), _.groupBy(), এবং _.sortBy() ফাংশনগুলো ডেটা সংগঠিত এবং সাজানোর জন্য অত্যন্ত কার্যকরী। এগুলো আপনাকে অ্যারে বা অবজেক্টের ডেটাকে সহজে একটি নির্দিষ্ট key বা মান অনুযায়ী গ্রুপ বা সাজাতে সাহায্য করে:
_.keyBy(): একটি নির্দিষ্ট key এর ভিত্তিতে ডেটা কে object আকারে রূপান্তর করে।_.groupBy(): ডেটাকে একটি নির্দিষ্ট key বা মানের ভিত্তিতে গ্রুপ করে।_.sortBy(): ডেটাকে একটি নির্দিষ্ট key বা মানের ভিত্তিতে ascending order তে সাজায়।
এই ফাংশনগুলো ব্যবহার করে আপনি আপনার ডেটা ম্যানিপুলেশন এবং বিশ্লেষণ আরও দ্রুত এবং কার্যকরী করতে পারবেন।
Read more