สมมติว่าเรามีวัตถุ 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 }