gpt4 book ai didi

javascript - 合并 2 个没有重复内容的对象

转载 作者:行者123 更新时间:2023-11-30 11:30:43 31 4
gpt4 key购买 nike

我正在尝试将 2 个对象合并在一起,但是可能会有 X 个重复项。例如,我已经有 historyExisting,我想向其中添加 historyNew。可以看到有重复

示例数据

var historyExisting =  { 
'1505845390000': 295426,
'1505757979000': 4115911,
'1505677767000': 4033384,
'1505675472000': 4033384,
'1505591090000': 3943956
}

var historyNew = {
'1505675472000': 4033384,
'1505591090000': 3943956,
'1505502071000': 3848963,
'1505499910000': 3848963,
'1505499894000': 3848963
}

期望的结果

var history = {
'1505845390000': 295426,
'1505757979000': 4115911,
'1505677767000': 4033384,
'1505675472000': 4033384,
'1505591090000': 3943956,
'1505502071000': 3848963,
'1505499910000': 3848963,
'1505499894000': 3848963
}

如您所见,结果仍按时间戳顺序保存,但已删除所有重复项。我一直在尝试获取 historyExisting 中的最后一个项目键/值,在 historyNew 中找到它,删除之前的所有项目然后合并它们,但它看起来非常笨拙。

这是 Node 中的服务器端,因此不依赖于浏览器。

有什么建议吗?

最佳答案

使用Object.assign :

(在 Node.js 4 及更高版本中受支持)

var historyExisting = {
'1505845390000': 295426,
'1505757979000': 4115911,
'1505677767000': 4033384,
'1505675472000': 4033384,
'1505591090000': 3943956
}

var historyNew = {
'1505675472000': 4033384,
'1505591090000': 3943956,
'1505502071000': 3848963,
'1505499910000': 3848963,
'1505499894000': 3848963
}

var merged = Object.assign({}, historyExisting, historyNew);

console.log(merged);

其他选项:

如果您需要支持不支持 Object.assign 的浏览器(或环境),您的武器库中可能已经有可用的工具,例如 jQuery 的扩展,或 lodash 的扩展 和许多其他 polyfill。如果您无法访问此类工具,您可以随时编写自己的工具:

function extend(base, ...objs) {
objs.forEach(obj => {
Object.keys(obj).forEach(key => {
base[key] = obj[key];
})
});
return base;
}

var historyExisting = {
'1505845390000': 295426,
'1505757979000': 4115911,
'1505677767000': 4033384,
'1505675472000': 4033384,
'1505591090000': 3943956
}

var historyNew = {
'1505675472000': 4033384,
'1505591090000': 3943956,
'1505502071000': 3848963,
'1505499910000': 3848963,
'1505499894000': 3848963
}

var merged = extend({}, historyExisting, historyNew);

console.log(merged);

关于javascript - 合并 2 个没有重复内容的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46327376/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com