【发布时间】:2016-03-23 14:14:10
【问题描述】:
我试图像这样合并和添加这两个对象:
obj1 = {
jpg: 1,
gif: 3,
}
obj2 = {
jpg: 1,
avi: 5,
}
obj3 = mergeAdd(obj1, obj2);
// obj3 = {
// jpg: 2,
// gif: 3,
// avi: 5,
// }
首先,我创建了这个需要 O(n^2) 个赞:
for (let foo in obj1) {
for (let bar in obj2) {
if (foo === bar) {
// Exists : Add count
obj1[bar] += obj2[bar];
} else {
// Don`t Exists : Copy from obj2
obj1[bar] = obj2[bar];
}
}
}
然后,我想到了一个“新想法”——使用哈希函数:
- 获取 obj1 和 obj2 的“键”的哈希值。
- 使用它们的哈希值作为数组的索引,将 obj1 和 obj2 的“值”插入或添加到新数组中。
- 将数组变成新对象。
我想知道的:
- 有没有类似 mergeAdd(obj1, obj2) 的库?
- 我的“新想法”比 mergeAdd(obj1, obj2) 快吗?
- mergeAdd 最快的算法是什么?
谢谢!
【问题讨论】:
-
O(nlogn) 用于合并和排序。
标签: javascript algorithm javascript-objects