数组一,arr缺少数量属性,但是我有一个与arr具有相同id的arr2,试图使用javascript函数的map()但是不能正常工作。
NSObject *obj

我希望我的arr3输出会像这样
var arr = [{id:1,'name':'banana'},{id:2,'name':'watermelon'}];
var arr2 = [{id:1,'qty':1},{id:1,'qty':4}];
var arr3 = arr.map(function(obj,i){
return obj.id == arr2.id;
//return obj.id
});
document.write(arr3);
答案 0 :(得分:1)
你必须在第二个数组中进行查找。如果它是基于索引的,你可以更容易地做到,但在你的情况下,这是一个很好的选择:
var arr3 = arr.map(function(obj,i){
var arr2match = arr2.filter( function(x){
return x.id == obj.id;
})[0];
obj.qty = arr2match.qty;
return obj;
});
答案 1 :(得分:0)
这有点长,但可能有更多实用程序,因为它将复制第二个数组中的所有属性(不仅仅是数量)。结果是一个关联数组,它包含所有id字段的唯一键。
var arrAssoc = {};
arr.map(
function(obj,i) {
arrAssoc[obj.id] = obj;
}
);
arr2.map(
function(obj,i) {
for (var key in obj) {
if (key != 'id' && arrAssoc[obj.id] && obj.hasOwnProperty(key)) {
arrAssoc[obj.id][key] = obj[key];
}
}
}
);
奖金回合,这是你想要的结果
arr3 = arr.map(
function(obj,i) {
return arrAssoc[obj.id];
}
);