2012-01-23 71 views
2

如何合併多個(5個陣列中的一個):合併5個陣列串的一個

var arr1 = ['a','b']; 
var arr2 = ['c','d','n']; 
var arr3 = ['e','f']; 
var arr4 = ['g','h']; 
var arr5 = ['o','p','q']; 

我嘗試這一點,但沒有運氣:

objCls = arr1 + arr2 + arr3 + arr4 + arr5; 
var objectsClass = objCls.split(',');  
+0

定義「合併」。只是一個簡單的聯盟?或者你想過濾出重複? –

回答

7
var all = [].concat(arr1, arr2, arr3, arr4, arr5) 

所有五個輸入數組保持不變。文檔:Array::concat

+0

可能是如果我添加另一個空,並做arr1與數組的其餘部分......的連續? –

+0

@生活藝術:我不知道我是否正確理解了你的評論,但我更新了片段以清楚說明'arr1'沒有發生變異。它絕對讀得更好。 – davidchambers

+0

男人謝謝你...我正在工作,但對我來說它不是......什麼是錯的..? http://jsfiddle.net/ArtofLife_again/JkhHH/8/ –

4

嘗試CONCAT:

var c = arr1.concat(arr2, arr3, arr4, arr5); 
1

arr1.concat(arr2).concat(arr3)等等? 甚至更​​好arr1.concat(arr2,arr3,arr4)。 我看到已經有人提出了:)

1
 

Array.prototype.merge = function(){ 
    for(var i = 0; i < arguments.length; i++){ 
     var array = arguments[i]; 
     for(var j = 0; j < array.length; j++){ 
      if(this.indexOf(array[j]) === -1) { //remove this if condition if you dont want unique values in your array 
       this.push(array[j]); 
      } 
     } 
    } 
    return this; 
}; 

 
+2

爲什麼要創建'Array :: merge'?不是'Array :: concat'完全符合我們的要求嗎? – davidchambers

+0

是的,當然是的,我給出的解決方案是一種替代方法.. –

+0

@Sudhir - 請注意,您的解決方案並不是真正的「替代」,因爲它做了一些不同的事情。 'Array.prototype.concat'將愉快地產生一個重複值的數組,而你的方法不會。 –