[英]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.