Вместо явных циклов чуть больше сахара. Хз как оно быстрее работать будет, но выглядит умнее :)
Но если честно я бы просто написал 2 for-а обычных, с brake-ом внутри. Нафиг нужны все эти оболочки для мелких циклов типа этого? лишнее же. Причем будут лишние итерации цикла, как не пиши.
var arr2 = [{id:1,foo:'bar', selected:false},{id:2, foo:'baz', selected:true}];
var arr = [{id:1,foo:'bar', selected:null},{id:2, foo:'baz', selected:null}];
var found = false;
for (var i=0;i<arr.length;i++){
for (var j=0;j<arr2.length;j++){
if (arr[i].id==arr2[j].id){
arr[i].selected = arr2[j].selected;
break;
}
}
}
console.log(arr);
Ну и еще, если браузеры целевые посовременнее, то $.grep можно заменить нативным нынче array.filter(), a $.map-> array.forEach();
var arr2 = [{id:1,foo:'bar', selected:false},{id:2, foo:'baz', selected:true}];
var arr = [{id:1,foo:'bar', selected:null},{id:2, foo:'baz', selected:null}];
arr.forEach(function(item){
item.selected = arr2.filter(function(item2){
return item2.id == item.id;
})[0].selected;
});
console.log(arr);
_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."
Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. ©
AllesKlar