Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> 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