如何通过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 }
]热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短