লড্যাশ (Lodash) লাইব্রেরির get মেথড ব্যবহার করে যেকোনো লেভেলের প্রপার্টি সেফলি পাওয়া যায়। ফার্স্ট-লেভেল প্রপার্টি এক্সেস সহজ। নেস্টেড প্রপার্টি এক্সেস ট্রিকি, সেজন্য টেস্ট করা লাইব্রেরি যেমন লড্যাশ ব্যবহার করা উচিত।
Lodash get() উদাহরণ
let _ = require("lodash");
let obj = {
a: {
b: { foo: "test" },
c: 2
}
};
console.log(_.get(obj, "a.b.foo")); // "test"
console.log(_.get(obj, "a.c")); // 2
console.log(_.get(obj, "a.test")); // undefined
console.log(_.get(obj, "a.test.x")); // undefined (এরর না দিয়ে undefined)
আউটপুট
test 2 undefined undefined
কাস্টম getProp ফাংশন
const getProp = (object, path) => {
if (path.length === 1) return object[path[0]];
else if (path.length === 0) throw new Error("Empty path");
else {
if (object[path[0]]) return getProp(object[path[0]], path.slice(1));
else {
object[path[0]] = {};
return getProp(object[path[0]], path.slice(1));
}
}
};
ব্যবহার
var obj = {
level1: {
level2: { level3: { name: "Foo" } },
anotherLevel2: "bar"
}
};
console.log(getProp(obj, ["level1", "level2"]));
আউটপুট
{ level3: { name: "Foo" } }
মডার্ন অ্যাল্টারনেটিভ: Optional Chaining (ES2020)
// লড্যাশ ছাড়া নেস্টেড অ্যাক্সেস
const value = obj?.a?.b?.foo; // "test" বা undefined (এরর নেই)
// ডিফল্ট ভ্যালু সেট
const value2 = obj?.a?.missing?.prop ?? "default"; // "default"
ব্যাখ্যা
_.get() পাথ না পেলে undefined রিটার্ন করে (এরর থ্রো করে না)। অপশনাল চেইনিং (?.) মডার্ন জাভাস্ক্রিপ্টে নেটিভলি উপলব্ধ এবং অধিকাংশ কেসে লড্যাশের বিকল্প হিসেবে ব্যবহার করা যায়। কাস্টম getProp ফাংশনটিতে object[path[0]] = {} লাইনটি অজান্তে অবজেক্ট মিউটেট করে, যা অনিচ্ছাকৃত সাইড ইফেক্ট সৃষ্টি করতে পারে - প্রোডাকশনে এড়ানো উচিত।