javascript - 如何将这两张地图合并为一张
问题描述
我正在尝试将这两个地图合并为一个。我尝试使用 concat 但这不起作用。并且还尝试了 var m = {...v1, ...v2}; 但这也行不通。所以任何知道的人请帮助我。
这是我的两张地图:
var v1 = {Sdata: [{id: '1', name: 'Mark'},{id: '3', name: 'venu'}]};
var v2 = {Sdata: [{id: '2', name: 'Julee'},{id: '4', name: 'gopi'}]};
在这里我除了输出如下如果键匹配它应该像这样合并
result: Sdata: [{id: '1', name: 'Mark'},{id: '3', name: 'venu'}, {id: '2', name: 'Julee'},{id: '4', name: 'gopi'}]};
解决方案
只需使用动态方法将所有项目放在一个数组中即可。
var v1 = { Sdata: [{ id: '1', name: 'Mark' }, { id: '3', name: 'venu' }] },
v2 = { Sdata: [{ id: '2', name: 'Julee' }, { id: '4', name: 'gopi' }] },
merged = [v1, v2].reduce((a, b) => {
Object.entries(b).forEach(([k, v]) => {
if (!a[k]) a[k] = [];
a[k].push(...b[k]);
});
return a;
}, {});
console.log(merged);
推荐阅读
- python - 矩形的 QGraphicsItem 交互式调整大小
- java - 尝试在 appDataFolder 中获取文件列表时出现 GoogleAuthIOException
- python - 在 python 中为 format 提供多个参数的选项
- symfony - 我可以在不从头开始的情况下将现有的 zend 项目迁移到基于 symfony 的项目吗?
- java - Netty 关闭/停止 UDP 服务器
- python - 在哪里部署 Python Flask-SocketIO Webapp
- python - 不打印结果链表 - Python
- go - 如何将 FulfillmentMessages 作为 Dialogflow v2 WebhookResponse 的一部分发送?
- java - 我知道 Unix 和 C++,但不知道 RPM 或 Java,如何让 Java Hello World 运行?
- laravel - 无法使用 with 方法发回数据