我有一个愚蠢的问题,乍一看似乎很容易解决,但结果却很棘手。
我有一个对象数组,每个对象都有两个属性:id 和 value:
[
{id: 2, value: 10},
{id: 4, value: 3},
{id: 2, value: 2},
{id: 1, value: 15}
]
我想编写一个算法来总结具有相似 id 的值。
我的最终结果应该是一个仅包含合并对象的新数组:
[
{id: 2, value: 12},
{id: 4, value: 3},
{id: 1, value: 15}
]
我已尝试以下方法,但它不起作用:
var arr = [];
arr.push({id: 2, visit:10});
arr.push({id: 4, visit:3});
arr.push({id: 2, visit:2});
arr.push({id: 1, visit:15});
// Deep copy
var copy = jQuery.extend(true, [], arr);
var masterArr = [];
for (var i = 0; i < arr.length; i++) {
var objArr = [];
objArr.push(arr[i]);
for (var j = copy.length-1; j > -1; j--) {
if (arr[i].id === copy[j].id) {
var q = copy.splice(j,1);
}
}
masterArr.push(objArr);
}
我的计划是首先将所有相似的对象收集在单独的数组(objArr)中,将它们求和并将它们放入一个结束数组(masterArr)中。我使用jquerys扩展进行深层复制(而不是引用)并反向迭代和拼接以删除已被发现为“重复项”的对象。
这不行!这似乎不是解决我的问题的非常有效的方法。
我怎么能这样做呢?性能不是首要任务,而是“拥有就好”!
Thanks!