Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ทดสอบการมีอยู่ของคีย์อ็อบเจ็กต์ JavaScript ที่ซ้อนกันใน JavaScript


สมมติว่าเรามีการอ้างอิงถึงวัตถุ -

let test = {};

ออบเจ็กต์นี้อาจ (แต่ไม่ใช่ในทันที) มีออบเจ็กต์ที่ซ้อนกันอยู่ เช่น −

test = {level1: {level2: {level3: "level3"}}};

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับหนึ่งในวัตถุเช่นอาร์กิวเมนต์แรกและสตริงคีย์จำนวนเท่าใดก็ได้เป็นอาร์กิวเมนต์หลังจากนั้น

ฟังก์ชันควรกำหนดว่าชุดค่าผสมที่ซ้อนกันซึ่งแสดงโดยสตริงคีย์มีอยู่ในวัตถุหรือไม่

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const checkNested = function(obj = {}){
   const args = Array.prototype.slice.call(arguments, 1);
   for (let i = 0; i < args.length; i++) {
      if (!obj || !obj.hasOwnProperty(args[i])) {
         return false;
      }
      obj = obj[args[i]];
   };
   return true;
}
let test = {
   level1:{
      level2:{
         level3:'level3'
      }
   }
};
console.log(checkNested(test, 'level1', 'level2', 'level3'));
console.log(checkNested(test, 'level1', 'level2', 'foo'));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

true
false