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