我举个例子,这是一个数组去重方法,本地调试也过了,牛客上的在线编程也是能通过的,但是在网申的笔试中通过率是10%,
如果去掉最后的var array=[1,2,3,3,2,NaN,NaN];console.log(array.uniq());的话就显示你不通过,这是咋回事呀,好揪心啊
Array.prototype.uniq = function () {
var result=[];
var isNaN=true;
for(var i=0;i<this.length;i++){
if(result.indexOf(this[i])==-1){
if(this[i]!=this[i]){//需要排除特殊的NaN,如果不是NaN直接执行数组追加
if(isNaN){//通过这个设置是否已经存在NaN。true代表还没有存入NaN,如果是false那么已经存在,则不需要追加
result.push(this[i]);
isNaN = false;
}
}else
{
result.push(this[i]);
}
}
}
return result;
}
var array=[1,2,3,3,2,NaN,NaN];
console.log(array.uniq());