কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে গভীর নেস্টেড ভ্যালু সেফলি অ্যাক্সেস করা

লড্যাশ (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]] = {} লাইনটি অজান্তে অবজেক্ট মিউটেট করে, যা অনিচ্ছাকৃত সাইড ইফেক্ট সৃষ্টি করতে পারে - প্রোডাকশনে এড়ানো উচিত।

  1. জাভাস্ক্রিপ্ট দিয়ে পেরেন্ট এলিমেন্ট অ্যাক্সেস করা

  2. জাভাস্ক্রিপ্টে অ্যারেতে নেস্টেড অবজেক্ট মানগুলোর যোগফল

  3. জাভাস্ক্রিপ্টে ফাংশন রিটার্ন করা অ্যারে অ্যাক্সেস করা

  4. জাভাস্ক্রিপ্টে ফলসি ভ্যালু চিহ্নিত করা