code: function idUnique(a) {
    var i,j,l=a.length,p,
        guid=(Math.random()*1E10).toString(32)+(+new Date).toString(32);
    for (i=j=0;i<l;i++) {
      p = a[i];
      if (p==null) continue;
      if (p.hasOwnProperty(guid)) continue;
      Object.defineProperty(p,guid,{
        value:1,enumerable:false
      });
      a[j++]=p;
    }
    i=j;
    while (i--) {//clean guid
      a[i][guid]=undefined;
    }
    a.length=j;
    return a;
  }
docs: Object id unique.
  This function will corrupt the original array.
  Correct usage: a=idUnique(a);
  @param {[Object]} NonPrimitive Array