0

我在两个数组中有三个对象:

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"}  ];

我怎样才能做到这一点?

4

4 回答 4

3

如果您使用的是 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]);
});
于 2013-06-13T18:43:34.350 回答
1

演示

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));
于 2013-06-13T18:43:29.460 回答
0

这应该做你想要的:

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);
于 2013-06-13T18:43:12.160 回答
0

这可以在 vanilla 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

于 2013-06-13T18:54:06.713 回答