Majority of the solutions above have a high run time complexity.
Here is the solution that uses reduce
and can do the job in O(n) time.
Array.prototype.unique = Array.prototype.unique || function() {_x000D_
var arr = [];_x000D_
this.reduce(function (hash, num) {_x000D_
if(typeof hash[num] === 'undefined') {_x000D_
hash[num] = 1; _x000D_
arr.push(num);_x000D_
}_x000D_
return hash;_x000D_
}, {});_x000D_
return arr;_x000D_
}_x000D_
_x000D_
var myArr = [3,1,2,3,3,3];_x000D_
console.log(myArr.unique()); //[3,1,2];
_x000D_
Note:
This solution is not dependent on reduce. The idea is to create an object map and push unique ones into the array.