2016-04-24 118 views
0

我有一個數組我在開始時:合併這2個陣列

var array1 = [{"key":{"id":1,"kind":"Table","path":["Table",1]},"data":{"txt":"some txt","modified":1461294950,"cat1":"a1","permission":"n"}}, 
{"key":{"id":2,"kind":"Table","path":["Table",2]},"data":{"txt":"some txt","modified":1461294953,"cat1":"a1","permission":"n"}}, 
{"key":{"id":3,"kind":"Table","path":["Table",3]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
{"key":{"id":4,"kind":"Table","path":["Table",4]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
{"key":{"id":5,"kind":"Table","path":["Table",5]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}]; 

該陣列具有5個元素。然後我從我的服務器獲得5個更多的結果。我想將這個新數組添加到現有的。

所以我接受這個從我的服務器:

var server_response = [{"key":{"id":6,"kind":"Table","path":["Table",6]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
{"key":{"id":7,"kind":"Table","path":["Table",7]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
{"key":{"id":8,"kind":"Table","path":["Table",8]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
{"key":{"id":9,"kind":"Table","path":["Table",9]},"data":{"txt":"some txt","modified":1461294955,"cat1":"a1","permission":"n"}}, 
{"key":{"id":10,"kind":"Table","path":["Table",10]},"data":{"txt":"some txt","modified":1461294955,"cat1":"a1","permission":"n"}}]; 

因此合併它們,我去:

console.log(array1.push(server_response); 

但我得到以下結果:

[{「鍵「:{」id「:1,」kind「:」Table「,」path「:[」Table「,1]},」data「:{」txt「:」some txt「,」modified「:1461294950 「CAT1」: 「A1」, 「許可」: 「N」}},{ 「鍵」:{ 「ID」:2, 「kind」:「Table」,「path」:[「Table」,2]},「data」:{「txt」:「some txt」,「modified」:1461294953,「cat1」 「許可」: 「N」}},{ 「鍵」:{ 「ID」:3 「一種」: 「表」, 「路徑」:[ 「表」,3]}, 「數據」:{「TXT 「:」some txt「,」modified「:1461294954,」cat1「:」a1「,」permission「:」n「}},{」key「:{」id「:4,」kind「:」Table 「,」path「:[」Table「,4]},」data「:{」txt「:」some txt「,」modified「:1461294954,」cat1「:」a1「,」permission「:」n 「}」,{「key」:{「id」:5,「kind」:「Table」,「path」:[「Table」,5]},「data」:{「txt」 「,」修改「:1461294954,」cat1「:」a1「,」權限「:」n「}},[{」key「:{」id「:6,」kind「:」Table「,」path 「:[」Table「,6]},」data「:{」txt「:」some txt「,」modified「:1461294954,」cat1「:」a1「,」permission「:」n「}} {「key」:{「id」:7,「kind」:「Table」,「path」:[「Table」,7]},「data」:{「txt」:「some txt」,「modified 「:1461294954,」 CAT1 「:」 A1" , 「許可」: 「N」}},{ 「關鍵」:{ 「ID」:8,「種「:」Table「,」path「:[」Table「,8]},」data「:{」txt「:」some txt「,」modified「:1461294954,」cat1「:」a1「 「:」 N 「}},{」 鍵 「:{」 ID 「:9」,一種 「:」 表」, 「路徑」:[ 「表」,9]}, 「數據」:{ 「TXT」: 「some txt」,「modified」:1461294955,「cat1」:「a1」,「permission」:「n」}},{「key」:{「id」:10,「kind」:「Table」 「path」:[「Table」,10]},「data」:{「txt」:「some txt」,「modified」:1461294955,「cat1」:「a1」,「permission」:「n」} }]]

正如你所看到的,它將第二個數組作爲實際數組添加到第一個數組。我只想添加服務器響應的內容(基本上不應該有方括號)。我知道我可以使用正則表達式來做到這一點,但這似乎不是一個好的解決方案。我怎樣才能合併這些數組?

回答

6

我相信你正在尋找concat

var array1 = [{"key":{"id":1,"kind":"Table","path":["Table",1]},"data":{"txt":"some txt","modified":1461294950,"cat1":"a1","permission":"n"}}, 
{"key":{"id":2,"kind":"Table","path":["Table",2]},"data":{"txt":"some txt","modified":1461294953,"cat1":"a1","permission":"n"}}, 
{"key":{"id":3,"kind":"Table","path":["Table",3]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
{"key":{"id":4,"kind":"Table","path":["Table",4]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
{"key":{"id":5,"kind":"Table","path":["Table",5]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}]; 
var server_response = [{"key":{"id":6,"kind":"Table","path":["Table",6]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
{"key":{"id":7,"kind":"Table","path":["Table",7]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
{"key":{"id":8,"kind":"Table","path":["Table",8]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
{"key":{"id":9,"kind":"Table","path":["Table",9]},"data":{"txt":"some txt","modified":1461294955,"cat1":"a1","permission":"n"}}, 
{"key":{"id":10,"kind":"Table","path":["Table",10]},"data":{"txt":"some txt","modified":1461294955,"cat1":"a1","permission":"n"}}]; 
console.log(array1.concat(server_response)); 
+0

感謝這就是我一直在尋找!這是我認爲推動做的,但看起來不是。 – user2924127

1

我想追加這個新的數組到現有的。

如果您不想創建新陣列,則可以使用Array.prototype.push.applyArray.prototype.push.apply將更新您的array1,其內容爲server_push

見下文:

var array1 = [{"key":{"id":1,"kind":"Table","path":["Table",1]},"data":{"txt":"some txt","modified":1461294950,"cat1":"a1","permission":"n"}}, 
 
{"key":{"id":2,"kind":"Table","path":["Table",2]},"data":{"txt":"some txt","modified":1461294953,"cat1":"a1","permission":"n"}}, 
 
{"key":{"id":3,"kind":"Table","path":["Table",3]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
 
{"key":{"id":4,"kind":"Table","path":["Table",4]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
 
{"key":{"id":5,"kind":"Table","path":["Table",5]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}]; 
 

 
var server_response = [{"key":{"id":6,"kind":"Table","path":["Table",6]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
 
{"key":{"id":7,"kind":"Table","path":["Table",7]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
 
{"key":{"id":8,"kind":"Table","path":["Table",8]},"data":{"txt":"some txt","modified":1461294954,"cat1":"a1","permission":"n"}}, 
 
{"key":{"id":9,"kind":"Table","path":["Table",9]},"data":{"txt":"some txt","modified":1461294955,"cat1":"a1","permission":"n"}}, 
 
{"key":{"id":10,"kind":"Table","path":["Table",10]},"data":{"txt":"some txt","modified":1461294955,"cat1":"a1","permission":"n"}}]; 
 

 
Array.prototype.push.apply(array1, server_response); 
 

 
document.body.textContent = JSON.stringify(array1);

2

嘗試concat方法...

MergedArray=Array1.concat(Array2,Array3,Array4);