Array.prototype.uniq=function(){var resArr =[];var flag =true;for(var i =0; i <this.length; i++){if(rhis[i]!=this[i]){//排除NaNif(flag){
resArr.push(this[i]);
flag =false;}}else{
resArr.push(this[i]);}}return resArr;}
Array.prototype.uniq=function(){var result =[];var pushedNaN =false;var pushednullobj =false;for(var i =0; i <this.length; i++){var index1 =this.indexOf(this[i]);var index2 =this.lastIndexOf(this[i]);if(index1 != index2){
result.push(this[i]);while(index1 !=this.lastIndexOf(this[i])){this.splice(this.lastIndexOf(this[i]),1);}}elseif(index1 ==-1){//针对NaN做的判断,只有第一次出现的NaN能够push进resultif(!pushedNaN){
result.push(this[i]);
pushedNaN =true;}}elseif(this[i]!=this[i]){//针对{}做的判断,本地测试时没起作用,且如果是两个不同的对象,则这个地方所做处理不对。//需要增加判断对象属性及值的机制。但是估计这个测试用例没考虑{}if(!pushednullobj){
result.push(this[i]);
pushednullobj =true;}}else{
result.push(this[i]);}}return result;}
Array.prototype.uniq=function(){var hasNaN =false;for(var i =0; i <this.length; i++){if(this[i]!==this[i]) hasNaN =true;for(var j = i +1; j <this.length;){if(this[i]===this[j]||(hasNaN &&this[j]!==this[j])){this.splice(j,1);}else{
j++;}}}returnthis;}
Array.prototype.uniq=function(){let arr =this,
length =this.length,
hash ={},
res =[]for(let i =0; i < length; i++){if(!hash[arr[i]]||/Object/.test(Object.prototype.toString.call(arr[i]))){
res.push(arr[i])
hash[arr[i]]=1}}return res
}
Array.prototype.uniq=function(){var obj ={},
newArr =[],
item =null,
key =null;for(var i =0; i <this.length; i++){
item =this[i];var type = Object.prototype.toString.call(null).replace(/\[|\]/g,"").split(" ")[1];var key = type + item;// key = typeof this[i] + item;//过滤出Objectif(!obj[key]|| key.indexOf("object")>-1){
newArr.push(item);
obj[key]=true;}}return newArr;}
forEach遍历
Array.prototype.uniq=function(){var a =newSet();this.forEach((arr, i)=>{
a.add(arr);});return Array.from(a);};
hasOwnProperty
Array.prototype.uniq=function(){var obj ={};var array =[];for(var i =0; i <this.length; i++){var flag =false;if(obj.hasOwnProperty(this[i])) flag = obj[this[i]]===this[i];if(flag ||(!flag && obj.hasOwnProperty(this[i])&&(!this[i]===true)))continue;else{
obj[this[i]]=this[i];
array.push(this[i]);}}return array;};
利用for循环Array.prototype.uniq = function(){ var resArr = []; var flag = true; for(var i = 0; i < this.length; i++){ if(rhis[i] != this[i]){//排除NaN if(flag){ resArr.push(this[i]); flag = false;