前端学习之编程题系列:(九)数组去重

499 阅读1分钟

写在前面

本题目来自牛客网,已经成功通过测试。笔者刚刚开始学习前端,准备在掘金记录下自己的学习过程,欢迎和我一样准备入门前端的小伙伴们一起交流学习,也欢迎各位大佬批评指正~~~

题目描述

为 Array 对象添加一个去除重复项的方法

示例

输入

[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN]

输出

[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a']

题解

Array.prototype.uniq = function () {
    let arrNew = []
    this.forEach(ele => {
        if(arrNew.indexOf(ele) === -1 && ele === ele ||
          ele !== ele && !arrNew.includes(NaN) ){
            arrNew.push(ele)
        }
    })
    return arrNew
}

知识点

难点主要是NaN的处理

  • 判断数组中是否包含NaN不能用indexOf,arrayObject.indexOf(NaN)恒等于-1; 用arrayObject.includes(NaN)来判断。
  • NaN是唯一一个不等于自身的元素,NaN !== NaN