Javascript: Remove duplicates from Array

There is now an array prototype function for removing duplicates. I suggest you use the prototype function instead of the functions below. It is the way it should have been done in the first place and is faster and moreover the most correct way to do it.
Array.prototype.unique = function () {
 var r = new Array();
 o:for(var i = 0, n = this.length; i < n; i++)
 {
  for(var x = 0, y = r.length; x < y; x++)
  {
   if(r[x]==this[i])
   {
    continue o;
   }
  }
  r[r.length] = this[i];
 }
 return r;
}
You can now utilize the unique function like this:
var arr = [1,2,2,3,3,4,5,6,2,3,7,8,5,9];
var unique = arr.unique();
alert(unique);
The result will be [1,2,3,4,5,6,7,8,9].

The first one does what you’ll expect, it’ll regard the first encountered entry as the original and all subsequent entries as duplicates.
function unique(a)
{
   var r = new Array();
   o:for(var i = 0, n = a.length; i < n; i++)
   {
      for(var x = 0, y = r.length; x < y; x++)
      {
         if(r[x]==a[i]) continue o;
      }
      r[r.length] = a[i];
   }
   return r;
}
If we pass the following array [1, 2, 3, 1, 4, 5] to the function the result will be [1, 2, 3, 4, 5]. The second variant returns different results. It will regard the last encountered duplicate as the original. This may be desirable in certain situations.
function unique(a)
{
   var r = new Array();
   o:for(var i = 0, n = a.length; i < n; i++) {
      for(var x = i + 1 ; x < n; x++)
      {
         if(a[x]==a[i]) continue o;
      }
      r[r.length] = a[i];
   }
   return r;
}
The output in this case will be [2, 3, 1, 4, 5]. You can easily adapt the function to make it a prototype function of an Array object. If people don’t know how to do it just ask, i’ll add it. Hope this helps someone out!

Comments

Post a Comment

Popular posts from this blog

Azure Cloud service problem "The current service model is out of sync"

Creating an Image Watermark

Drupal 8 Media Library with SVG upload