লড্যাশ (Lodash) লাইব্রেরির set মেথড ব্যবহার করে যেকোনো লেভেলের প্রপার্টি সেফলি সেট করা যায়। ফার্স্ট-লেভেল প্রপার্টি সেট করা সহজ। নেস্টেড প্রপার্টি এক্সেস ট্রিকি, সেজন্য টেস্ট করা লাইব্রেরি যেমন লড্যাশ ব্যবহার করা উচিত।
Lodash set() উদাহরণ
let _ = require("lodash");
let obj = {
a: {
b: { foo: "test" },
c: 2
}
};
_.set(obj, "a.b.foo", "test1");
_.set(obj, "a.c", { test2: "bar" });
console.log(obj);
আউটপুট
{ a: { b: { foo: 'test1' }, c: { test2: 'bar' } } }
কাস্টম setUpdateProp ফাংশন
লাইব্রেরি ছাড়াও নিজের ফাংশন লিখা যায়:
const setUpdateProp = (object, path, value) => {
if (path.length === 1) object[path[0]] = value;
else if (path.length === 0) throw new Error("Empty path");
else {
if (object[path[0]])
return setUpdateProp(object[path[0]], path.slice(1), value);
else {
object[path[0]] = {};
return setUpdateProp(object[path[0]], path.slice(1), value);
}
}
};
ব্যবহার
var obj = {
level1: {
level2: { level3: { name: "Foo" } },
anotherLevel2: "bar"
}
};
setUpdateProp(obj, ["level1", "level2"], "FooBar");
console.log(obj);
আউটপুট
{ level1: { level2: 'FooBar', anotherLevel2: 'bar' } }
ব্যাখ্যা
_.set(obj, path, value) পাথ স্ট্রিং ("a.b.c") বা অ্যারে (["a","b","c"]) হিসেবে নেয়। পাথ existencia না থাকলে অটোমেটিক্যালি অবজেক্ট তৈরি করে (অটো-ভিভিফিকেশন)। কাস্টম ফাংশনটিও একই কাজ করে কিন্তু এরর হ্যান্ডলিং যোগ করা যেতে পারে।