簡體   English   中英

合並Java數組中的對象

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM