สมมติว่าเรามีสตริงชนิดพิเศษที่มีอักขระเป็นคู่เช่นนี้ −
const str = "AABBCCDDEE";
เราจะต้องสร้างวัตถุตามสตริงนี้ซึ่งควรมีลักษณะเช่นนี้ -
const obj = { code: "AA", sub: { code: "BB", sub: { code: "CC", sub: { code: "DD", sub: { code: "EE", sub: {} } } } } };
โปรดสังเกตว่าสำหรับคู่ที่ไม่ซ้ำกันแต่ละคู่ในสตริง เรามีออบเจ็กต์ย่อยใหม่และคุณสมบัติโค้ดที่ระดับใดๆ แสดงถึงคู่ที่เจาะจง
เราสามารถแก้ปัญหานี้โดยใช้วิธีการแบบเรียกซ้ำ เราจะวนซ้ำในสตริงเพื่อเลือกคู่ที่เฉพาะเจาะจงและกำหนดวัตถุย่อยใหม่ให้กับมัน
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
const str = "AABBCCDDEE"; const constructObject = str => { const res = {}; let ref = res; while(str){ const words = str.substring(0, 2); str = str.substr(2, str.length); ref.code = words; ref.sub = {}; ref = ref.sub; }; return res; }; console.log(JSON.stringify(constructObject(str), undefined, 4));
ผลลัพธ์
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ในคอนโซล -
{ "code": "AA", "sub": { "code": "BB", "sub": { "code": "CC", "sub": { "code": "DD", "sub": { "code": "EE", "sub": {} } } } } }