此题可以使用arr.indexof(item)是否等于当前项的下标来筛选数据,因为indexof只会返回数组中第一次出现的元素的下标,我们可以通过判断返回的下标和当前元素的下标是否相同来判断。
值得一提的是因为数组中包含NaN,而任意NaN不等于NaN,所以indexof无法进行筛选。这里我们可以拿到每一项时用Number.isNaN(item)先判断其是否为NaN,若为NaN,再判断NaN是否第一次出现,如何判断NaN是否第一次出现,我们可以在函数中定义一个flag=0,检测到一次,flag++,我们通过判断flag是否为0来筛选重复NaN.

     Array.prototype.uniq = function () {
            let flag=0
            let arr=[]

             for(let k=0;k<this.length;k++){
                 if(Number.isNaN(this[k])&&flag==0){
                    arr.push(this[k])
                    flag++
                 }else if(this.indexOf(this[k])==k){
                    arr.push(this[k])
                 }
             }
             return arr

        }