[英]Merge objects in arrays in Javascript
我有两个数组中的三个对象:
var tab1 = [{"foo":"bar"}, {"foo2":"bar2"}, {"foo3":"bar3"} ];
var tab2 = [ {"2foo":"2bar"}, {"2foo2":"2bar2"}, {"2foo3":"2bar3"} ];
我的目标是合并这样的数组:
var tab3 = [ {"foo":"bar", "2foo":"2bar"}, {"foo2":"bar2",
"2foo2":"2bar2"}, {"foo3":"bar3", "2foo3":"2bar3"} ];
我怎样才能做到这一点?
如果您使用的是jQuery,则可以使用jQuery.extend()
。
它正是您想要的。
例:
for (var i = 0; i < tab1.length; i++) {
tab1[i] = $.extend(tab1[i], tab2[i]);
}
这是一个小提琴: http : //jsfiddle.net/fCx9C/2/
如果您不想使用jQuery,则可以在此处查看它们如何实现jQuery.extend() 。
如果您确实想使用jQuery,这是jQuerified循环:
$.each(tab1, function (i, t) {
t = $.extend(t, tab2[i]);
});
function merge(obj1, obj2) {
var tmp = {};
for (var key in obj1) {
tmp[key] = obj1[key];
};
for (key in obj2) {
tmp[key] = obj2[key];
};
return tmp;
};
function zip(arr1, arr2) {
var tmp = [];
for (var i = 0, len = arr1.length; i < len; i++) {
tmp[i] = merge(arr1[i], arr2[i]);
};
return tmp;
};
var tab1 = [{"foo":"bar"}, {"foo2":"bar2"}, {"foo3":"bar3"} ];
var tab2 = [ {"2foo":"2bar"}, {"2foo2":"2bar2"}, {"2foo3":"2bar3"} ];
console.log(zip(tab1, tab2));
这应该做您想要的:
var merge = function(t1, t2) {
var arr = [];
for(i=0; i<t1.length; i++) {
for(var prop in t2[i]) {
arr.push(t1[i]);
arr[i][prop] = t2[i][prop];
}
}
return arr;
}
var tab3 = merge(tab1, tab2);
这可以在原始JavaScript中很好地完成:
var tab1 = [{"foo":"bar"}, {"foo2":"bar2"}, {"foo3":"bar3"} ];
var tab2 = [ {"2foo":"2bar"}, {"2foo2":"2bar2"}, {"2foo3":"2bar3"} ];
var tab3 = [];
for(var i = 0; i < 3; i++) {
for(var j in tab2[i]) {
tab1[i][j] = tab2[i][j];
}
tab3.push(tab1[i]);
}
console.log(tab3);
但是,您甚至不必创建tab3
数组,因为它已经将所有内容很好地放入了tab1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.