我有 2 个数组,其中包含如下对象。
var arrayl = {
1: {url:google.com, score:0},
2: {url:bing.com, score: 2},
3: {url:yahoo.com, score: 0},
4: {url:facebook.com, score: 5},
5: {url:dopgile.com, score: 1},
6: {url:ask.com, score: 10},
7: {url:duckduckgo.com, score: 10}
},
array2 = {
1: {url:google.com, score: 2},
2: {url:facebook.com, score: 3},
3: {url:twitter.com, score: 0},
4: {url:duckduckgo.com, score: 0},
5: {url:mamma.com, score: 4},
6: {url:myspace.com, score: 5}
};
数组 1 和数组 2 本身都有独特的元素。但是,它们之间有重复。
我想将数组 2 与数组 1 合并,以便在数组 1 中重复元素发生时将其分数增加 1。
例如,google.com 存在于数组 2 和数组 1 中。当合并过程开始时,它将数组 1 的第一个元素 google.com 的分数增加到 1 而不是 0。它不应该添加第一个元素array2 的元素给它,因为它是重复的。
类似地,元素 2,3,5,6 将被合并而不增加任何分数,因为数组 1 中没有重复项。但是,duckduckgo 是重复的,会将array1[7] 中的duckduckgo.com 的分数增加到11,并且不会将其添加到数组中。
最后,数组应该是:
var arrayl = {
1: {url:google.com, score:1},
2: {url:bing.com, score: 2},
3: {url:yahoo.com, score: 0},
4: {url:facebook.com, score: 5},
5: {url:dopgile.com, score: 1},
6: {url:ask.com, score: 10},
7: {url:duckduckgo.com, score: 11}
8: {url:facebook.com, score: 3},
9: {url:twitter.com, score: 0},
10: {url:mamma.com, score: 4},
11: {url:myspace.com, score: 5}
},
我尝试使用以下循环遍历数组。
for(var j=0; j<10;j++) {
for(var k=0; k<10; k++) {
if(array1[k].url==array2[j].url){
array1[k].changeRankScore(array1[k].score+1);
}else{
//this is the case where it is not the same. Ideally i should just push it to array1 but since it's a double loops, finally all the items will be added from array2 to array1 with several duplicates.
}
}
}
请帮忙。