题解 | #数组去重#

数组去重

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
}
全部评论
对象{},{}好像没有过滤出去
点赞
送花
回复
分享
发布于 2021-09-23 18:15

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务