js連線多個陣列並刪除重複的元素

antzone發表於2017-03-17

在實際應用中,可能需要將多個陣列合併到一個陣列中去,並且刪除陣列中重複的元素。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var a=["antzone","螞蟻部落","市南區"], 
b=["新銳科技","螞蟻部落","努力奮鬥"], 
c=[2,"新銳科技","js教程"], 
_a=a.concat(b).concat(c), 
_hash={}, 
_new=[]; 
for(var i=_a.length;i--;){ 
  if(!_hash[_a]){ 
    _hash[_a]=1; 
    _new.push(_a); 
  }; 
}; 
console.log(_new)

以上程式碼實現了我們的要求,可以將三個陣列連線起來,並且刪除了重複的元素,下面介紹一下此效果的實現過程。

一.實現原理:

首先使用concat函式將幾個陣列連線在一起,然後再刪除新陣列中重複的元素,刪除重複元素的方法其實非常的簡單,就是將陣列中的元素作為物件的屬性,首先判斷物件中如果沒有此屬性,如果沒有的話,則將此值存入新的陣列,然後再將此值作為物件的屬性,如此重複,具體可以參閱程式碼註釋。

二.程式碼註釋:

1.var a=["antzone","螞蟻部落","市南區"],使用直接量方式宣告陣列。

2._a=a.concat(b).concat(c),將陣列連線為一個陣列。

3._hash={},宣告一個物件,此物件會以陣列的元素作為屬性。

4._new=[],宣告一個新陣列,用來儲存刪除重複後的元素。

5.for(var i=_a.length;i--;){},迴圈語句,這個寫法等同於for(var i=_a.length;i>0i--;)。

6.if(!_hash[_a]),判斷物件中是否含所有此屬性。

7._hash[_a]=1,如果沒有的話就新增此屬性並將屬性值設定為1,這裡設定為1其實沒有什麼特別用以,雖然一個都可以。

8._new.push(_a),將此元素新增到新的陣列。

三.相關閱讀:

1.contact()函式可以參閱javascript concat()一章節。 

2.push()函式可以參閱javascript push()一章節。

相關文章