如何在 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