Computer >> Máy Tính >  >> Lập trình >> Javascript

Nối hai đối tượng bằng khóa trong JavaScript

Giả sử, chúng ta có hai mảng JSON con và mẹ của các đối tượng như thế này -

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: {}
}];

Chúng tôi được yêu cầu viết một hàm JavaScript có trong hai mảng này.

Và hàm của chúng ta sẽ hợp nhất các đối tượng mảng con thành các đối tượng mẹ tương ứng.

Do đó, kết quả cuối cùng sẽ trông giống như thế này -

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,
      }
   },
];

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

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