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

จะแปลงคีย์อ็อบเจ็กต์วงเล็บเหลี่ยมเป็นออบเจ็กต์ที่ซ้อนกันใน JavaScript ได้อย่างไร


เรารู้ว่ามีสองวิธีที่เราสามารถเข้าถึงคีย์ที่ซ้อนกันภายใน Object ใน JavaScript

ตัวอย่างเช่น ใช้วัตถุนี้ −

const obj = {
   object: {
      foo: {
         bar: {
            ya: 100
         }
      }
   }
};

หากเราจำเป็นต้องเข้าถึงหรืออัปเดตคุณสมบัติที่ซ้อนกัน 'ya' เราสามารถเข้าถึงได้เช่น -

วิธีที่ 1 -

obj['object']['foo']['bar']['ya']

หรือ วิธีที่ 2 -

obj.object.foo.bar.ya

ทั้งสองวิธีนี้นำเราไปสู่จุดหมายเดียวกัน

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้เส้นทางไปยังคีย์ที่ซ้อนกันเป็นสตริงตามที่แสดงในวิธีที่ 1 และแปลงเป็นสัญกรณ์ที่แสดงโดยวิธีที่ 2

ตัวอย่าง

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

const obj = { "object[foo][bar][ya]": 100 };
const constructDotNotation = obj => {
   const keys = Object.keys(obj)[0].split('[').map(el => {
      return el.replace(']', '');
   });
   let res = {};
   keys.reverse().forEach(key => {
      if (Object.keys(res).length === 0){
         res[key] = obj[Object.keys(obj)[0]];
      }else{
         const temp = {};
         temp[key] = res;
         res = temp;
      };
   });
   return res;
};
console.log(JSON.stringify(constructDotNotation(obj), undefined, 4));

ผลลัพธ์

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

{
   "object": {
      "foo": {
         "bar": {
            "ya": 100
         }
      }
   }
}