Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

รวมสองออบเจกต์ตามคีย์ใน JavaScript


สมมติว่าเรามีอาร์เรย์ JSON ของ child และ parent ออบเจกต์ดังนี้

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 ที่รับอาร์เรย์ทั้งสองนี้

และฟังก์ชันควรรวมออบเจกต์ child array เข้ากับ parent objects ที่สอดคล้องกัน

ดังนั้น ผลลัพธ์สุดท้ายควรเป็นดังนี้

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' } 
  } 
]