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

การทำให้วัตถุ JSON แบนราบใน JavaScript


สมมติว่าเรามีวัตถุ JSON ต่อไปนี้ที่อาจมีการซ้อนไม่เกินระดับใด ๆ -

const obj = {
   "one": 1,
   "two": {
      "three": 3
   },
   "four": {
      "five": 5,
      "six": {
         "seven": 7
      },
      "eight": 8
   },
   "nine": 9
};

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

ดังนั้น ในกรณีของวัตถุด้านบน ผลลัพธ์ควรมีลักษณะดังนี้ −

const output = {
   'one': 1,
   'two.three': 3,
   'four.five': 5,
   'four.six.seven': 7,
   'four.eight': 8,
   'nine': 9
};

ตัวอย่าง

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

const obj = {
   "one": 1,
   "two": {
      "three": 3
   },
   "four": {
      "five": 5,
      "six": {
         "seven": 7
      },
      "eight": 8
   },
   "nine": 9
};
const flattenJSON = (obj = {}, res = {}, extraKey = '') => {
   for(key in obj){
      if(typeof obj[key] !== 'object'){
         res[extraKey + key] = obj[key];
      }else{
         flattenJSON(obj[key], res, `${extraKey}${key}.`);
      };
   };
   return res;
};
console.log(flattenJSON(obj));

ผลลัพธ์

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

{
   one: 1,
   'two.three': 3,
   'four.five': 5,
   'four.six.seven': 7,
   'four.eight': 8,
   nine: 9
}