สมมติว่าเรามีอาร์เรย์ JSON ลูกและพาเรนต์สองตัวของวัตถุเช่นนี้ -
const child = [{ id: 1, name: 'somename', parent: { id: 2 }, }, { id: 2, name: 'some child name', parent: { id: 4 } }]; const parent = [{ id: 1, parentName: 'The first', child: {} }, { id: 2, parentName: 'The second', child: {} }, { id: 3, parentName: 'The third', child: {} }, { id: 4, parentName: 'The fourth', child: {} }];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์สองอาร์เรย์นี้
และฟังก์ชันของเราควรรวมออบเจ็กต์อาร์เรย์ลูกเข้ากับออบเจ็กต์หลักที่เกี่ยวข้อง
ดังนั้นผลลัพธ์สุดท้ายควรมีลักษณะดังนี้ −
const output = [ { id: 1, parentName: The first, child: {} }, { id: 2, parentName: The second, child: { id: 1, name: somename, } }, { id: 3, parentName: The third, child: {} }, { id: 4, parentName: The fourth, child: { id: 2 name: some child name, } }, ];
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const child = [{ id: 1, name: 'somename', parent: { id: 2 }, }, { id: 2, name: 'some child name', parent: { id: 4 } }]; const parent = [{ id: 1, parentName: 'The first', child: {} }, { id: 2, parentName: 'The second', child: {} }, { id: 3, parentName: 'The third', child: {} }, { id: 4, parentName: 'The fourth', child: {} }]; const combineParentChild = (parent, child) => { const combined = []; for (let i = 0; i < parent.length; i++) { for (let j = 0; j < child.length; j++) { if (child[j].parent.id === parent[i].id) { parent[i].child.id = child[j].id; parent[i].child.name = child[j].name; break; }; }; combined.push(parent[i]) }; return combined; }; console.log(combineParentChild(parent, child));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ { id: 1, parentName: 'The first', child: {} }, { id: 2, parentName: 'The second', child: { id: 1, name: 'somename' } }, { id: 3, parentName: 'The third', child: {} }, { id: 4, parentName: 'The fourth', child: { id: 2, name: 'some child name' } } ]