我有以下对象:
var empAry= [{"empid":"101","name":"David"},{"empid":"102","name":"Sam"}..];//2000 records
var empAry2= [{"empid":"101","name":"David"},{"empid":"105","name":"Kevin"},{"empid":"109","name":"Robert"},{"empid":"110","name":"Rob"}..];//30000 records
我需要向empAry
对象添加新元素,并根据empAry2
中特定记录的可用性填充新元素值。
预期输出: -
empAry= [{"empid":"101","name":"David", **"FounInempAry2":"Yes"**},{"empid":"102","name":"Sam", **"FounInempAry2":"No"}**..];//2000 records
如果我们能通过jquery做到这一点会很好。请帮帮我。
答案 0 :(得分:1)
由于两个样本中的对象结构相同,因此很难理解FounInempAry2
是什么。我将假设存在其他属性,并将使用jQuery $.extend()
来"合并"属性。
首先,使用empid
作为键来循环遍历大数组并创建对象可能是最有效的。
var tmp = {};
$.each( empAry2, function(_, item){
tmp[ item.empid ] = item;
});
这会创建一个对象,如:
{
"101" : {"empid":"101","name":"David"},
"102" : {"empid":"102","name":"Sam"}
}
现在遍历第一个数组并使用tmp
对象
$.each( empAry, function(_, item){
$.extend( item, tmp[ item.empid ]);
});
答案 1 :(得分:0)
试试这个:
var entry = {"empid":"<some id>","name":"<some name>"}
var filter = empAry2.filter(function(o){
return o.empid==entry.empid;
});
entry.FounInempAry2=(filter && filter.length>0)?"Yes":"No";
empAry2.push(entry);
或者
var entry = {"empid":"<some id>","name":"<some name>","FounInempAry2":"No"}
for(var i=0,length=empAry2.length;i<length;i++){
if(empAry2[i].empid==entry.empid){
entry.FounInempAry2="Yes";
break;
}
}
empAry2.push(entry);