js刪除陣列中重複項的程式碼例項

螞蟻小編發表於2017-03-16

在實際應用中,可能需要陣列中的元素是不能夠重複的,但是提供的陣列在原始狀態下往往並非如此,下面就通過例項程式碼介紹一下如何刪除陣列中的重複元素,希望對需要的朋友帶來一定的幫助。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
Array.prototype.unique=function()
{
  var a=[]; 
  var l=this.length; 
  for (var i=0;i<l;i++)
  { 
    for(var j=i+1;j<l;j++)
   { 
     if(this[i]===this[j]) j = ++i; 
   } 
    a.push(this[i]);
  } 
  return a; 
}
var theArray=[1,2,3,5,2,8,12,1];
console.log(theArray.unique());

以上程式碼實現了實現了我們的要求,可以刪除陣列中的重複元素,下面簡單介紹一下它的實現過程:

一.實現原理:

程式碼非常的簡短,只要明白了程式碼採用的思想那麼就可以輕鬆理解理程式碼。首先用第一層for迴圈來遍歷陣列元素,這個for迴圈中又巢狀有第二個for迴圈,依次比較陣列中元素是否有相等的,如果有,則置之不理,開始下一個比較,如果沒有則將此元素寫入陣列a,並開始判斷下一個元素是否有重複的,依次迴圈。可能講述的還不夠清楚,可以參閱程式碼註釋。

二.程式碼註釋:

1.Array.prototype.unique=function(){},通過原型為Array物件新增一個名為unique的函式。

2.var a=[],建立一個空陣列,用來存放元素中無重複的元素。

3.var l=this.length,獲取當前陣列中元素的個數。

4.for (var i=0;i<l;i++){},通過for迴圈遍歷每一個陣列元素。

5.for(var j=i+1;j<l;j++){},巢狀的for迴圈,用來實現用陣列後面的元素與前面的元素輪流比較,以判斷是否相等也就是重複

6.if(this[ i ]===this[j]),判斷是否相等。

7.j=++i,如果相等則將i的值加1,然後再賦值給j。

8.a.push(this),如果沒有相等的則將此元素追加到陣列。

9.return a,返回陣列a。

相關文章