我有以下循环通过数组。
for(var j=0; j<10;j++) {
for(var k=0; k<10; k++) {
if(final[k]==ya[j]){
final[k].changeRankScore((ya[j].score + final[k].score)/2);
}else{
}
}
}
有两个数组,包含10个元素。我正在检查是否有一个在final中找到的重复元素。如果是,请更改重复元素的final的分数,不要将其添加到final。如果不是,我们可以将元素添加到final。
我想做的一种可能的方法是,标记要在以后添加到数组的元素。
有更好的方法吗?
编辑:
Final = { 1, 2, 3, 4, 5, 6, 7 } ;
ya = { 2 , 8, 7, 9, 10, 11, 12 } ;
我循环遍历数组Ya。如果元素也在数组Final中找到,则增加该元素的分数(因为它是一个对象)。如果找不到,只需将元素从数组Ya推送到数组final。
在这种情况下,数组Ya中的数字2和7是重复的。因此,应该增加与数组final中的那些数字相关联的分数,同时应该将数组Ya的其余元素推送到最终。然后该数组应该成为
Final = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
答案 0 :(得分:0)
您的样本数据不是很有效。你是这个意思吗? http://jsfiddle.net/B74Gm/
var final = {
1: {score:0},
2: {score: 2},
3: {score: 0},
4: {score: 5},
5: {score: 1},
6: {score: 10},
7: {score: 10}
},
ya = {
2: {score: 2},
10: {score: 3},
4: {score: 0},
15: {score: 0},
6: {score: 4},
17: {score: 5}
};
for (var i in ya) {
final[i] = final[i] || {score: 0};
final[i].score += ya[i].score;
}
答案 1 :(得分:0)
如果您不想使用任何框架,那就是代码:
function mix(first_arr, second_arr) {
for(i = 0; i < second_arr.length; i++) {
if(first_arr.indexOf(second_arr[i]) == -1) {
first_arr.push(second_arr[i]);
}
}
return first_arr;
}
PD:使用数组[]而不是对象{}