2012-09-18 172 views
0

在一個循環中,我試圖合併兩個數組的內容:在JavaScript中,如何將對象數組與另一個對象數組合並?

var myArray = [{a:"a"},{b:"b"}];//first pass in loop 
var myArray = [{c:"c"},{d:"d"}];//second pass in loop 

對於結果,我想有這樣的:

results = [{a:"a"},{b:"b"},{c:"c"},{d:"d"}]; 

如果我這樣做,在每遍:

results.splice(0,0,array[i]); 

然後results陣列變成兩個陣列的集合,而不是四個對象的集合。

我試過.concat,但那沒用。

有沒有辦法將包含對象數組的對象與另一個對象數組合並,而不使用for()push()的組合?

必須有一些簡單的我錯過了。

感謝

+0

concat應該工作 – PitaJ

+0

for/push有什麼問題? – Dennis

+0

@丹尼斯 - 看起來效率不高,因爲我需要做的就是將兩個集合結合起來。沒有? –

回答

4

實際上CONCAT是去你的榜樣 要定義myarray中兩次以正確的方式。希望這不是你的代碼中的情況。當我嘗試

var myArray1 = [{a:"a"},{b:"b"}]; 
var myArray2 = [{c:"c"},{d:"d"}]; 
var result = myarray1.concat(myarray2); 

這必須工作。如果沒有的話,請告訴我們你的瀏覽器這些threee行的結果

+0

這裏也適用。 – mhaligowski

+1

jsfiddle:http://jsfiddle.net/pitaj/EEUMV/1/ – PitaJ

+1

http://jsfiddle.net/elclanrs/EEUMV/2/ – elclanrs

0

Moataz有你的答案,但你提到一個循環,所以你可能會尋找:

var result = []; 
var myArray; 

for (...) { 
    myArray = /* getMyArray()? */ 
    result = result.concat(myArray); 
} 

其中myArray設置爲新值每一次。您可以通過將concat表達式中的數組分配給myArray的邏輯來刪除一行。

相關問題