【发布时间】:2021-06-30 10:13:36
【问题描述】:
有两个对象:
master = [ { "id": 411, "state": 1 },
{ "id": 2134, "state": 1 },
{ "id": 2135, "state": 0 },
{ "id": 2137, "state": 0 } ]
zips = [ { "id": 411, "zip": "90201" },
{ "id": 412, "zip": "90201" },
{ "id": 2134, "zip": "90201" },
{ "id": 2137, "zip": "90201" } ]
我想将它们合并在一起仅如果 zip 中的 id 存在于设备中。使用上面的数据,结果应该是:
master = [ { "id": 411, "state": 1, "zip": "90201" },
{ "id": 2134, "state": 1, "zip": "90201" },
{ "id": 2135, "state": 0 },
{ "id": 2137, "state": 0, "zip": "90201" } ]
id: 412 is zips is 'skipped' 因为它不在设备对象中。
我研究过像 Object.assign 或与 ... 合并这样的函数循环,但它们会产生不良结果(比如添加上面的 id 412,因为它存在于第二个对象中)
非常感谢任何提示或提示或更好的查看位置!
【问题讨论】:
-
这篇文章对你有帮助吗→stackoverflow.com/questions/40573555/…?
-
master.map(o=>({...o,...zips.find(z=>z.id===o.id)})); -
@jabaa 正确!接得好。问题相应地编辑。刚刚习惯于通过微服务将 JSON 拉入一个对象并仍然称其为 JSON。 :P
-
说真的...
master.map(o=>({...o,...zips.find(z=>z.id===o.id)}));- 当然,这不会改变主人:p - 如果你想改变主人......master.forEach((o,i,a)=>a[i]={...o,...zips.find(z => z.id === o.id)});
标签: javascript object merge