如何在 JavaScript 中按鍵合併兩個不同大小的物件陣列
假設我們有一個像這樣的物件 −
const obj = {
"part1": [{"id": 1, "a": 50},{"id": 2, "a": 55},{"id": 4, "a": 100}],
"part2":[{"id": 1, "b": 40}, {"id": 3, "b": 45}, {"id": 4, "b": 110}]
};我們需要編寫一個 JavaScript 函式來獲取這樣的一個物件。函式應該將物件的 part1 和 part2 合併為一個像這樣的物件陣列 −
const output = [
{"id": 1, "a": 50, "b": 40},
{"id": 2, "a": 55},
{"id": 3, "b": 45},
{"id": 4, "a": 100, "b": 110}
];示例
程式碼如下 −
const obj = {
"part1": [{"id": 1, "a": 50},{"id": 2, "a": 55},{"id": 4, "a": 100}],
"part2":[{"id": 1, "b": 40}, {"id": 3, "b": 45}, {"id": 4, "b": 110}]
};
const mergeObject = (obj = {}) => {
let result = [];
result = Object.keys(obj).reduce(function (hash) {
return function (r, k) {
obj[k].forEach(function (o) {
if (!hash[o.id]) {
hash[o.id] = {};
r.push(hash[o.id]);
}
Object.keys(o).forEach(function (l) {
hash[o.id][l] = o[l];
});
});
return r;
};
}(Object.create(null)), []).sort((a, b) => {
return a['id'] − b['id'];
});
return result;
};
console.log(mergeObject(obj));輸出
控制檯輸出如下 −
[
{ id: 1, a: 50, b: 40 },
{ id: 2, a: 55 },
{ id: 3, b: 45 },
{ id: 4, a: 100, b: 110 }
]
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP