题解 | #数组去重#
数组去重
http://www.nowcoder.com/practice/0b5ae9c4a8c546f79e2547c0179bfdc2
因为数组中包含NaN,而任意NaN不等于NaN,所以indexof无法进行筛选。这里我们可以拿到每一项时用Number.isNaN(item)先判断其是否为NaN,若为NaN,再判断NaN是否第一次出现.出现一次后改成false,洗一次再出现就不算入在内。
主要:用args.indexOf(args[i])遇到NaN永远返回-1,
判断是否是NaN的方法是 Number.isNaN(item)
Array.prototype.uniq = function () { let arr=this let newArr=[] let flag=true arr.forEach(item=>{ if(Number.isNaN(item)&&flag){ newArr.push(item) flag=false } else if(!Number.isNaN(item)){ //NaN不等于任何,包括他自身,所以args.indexOf(args[i])遇到NaN永远返回-1 if(newArr.indexOf(item)==-1) newArr.push(item) } }) return newArr }