Giả sử chúng ta có hai mảng đối tượng con và cha như sau:
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 ta cần viết một hàm JavaScript nhận hai mảng này.
Hàm sẽ hợp nhất các đối tượng mảng con vào các đối tượng cha tương ứng.
Do đó, đầu ra cuối cùng sẽ trông như sau:
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ã thực hiện:
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));
Kết quả
Kết quả trong console:
[
{ 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' } }
]