描述
输入:[false, true, undefined, null, NaN, 0, 1, {}, {}, ‘a’, ‘a’, NaN]
输出:[false, true, undefined, null, NaN, 0, 1, {}, {}, ‘a’]
利用indexOf实现
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
Array.prototype.uniq = function () {
let newArr=[]
let flag=true
for(let i=0,len=this.length;i<len;i++){
if(newArr.indexOf(this[i])==-1){
if(this[i]!==this[i]){//排除NaN
if(flag){
newArr.push(this[i])
flag=false
}
}else{
newArr.push(this[i])
}
}
}
return newArr
}
let arr=[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN]
console.log(arr.uniq())
利用includes实现
Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似。ES2016 引入了该方法。
Array.prototype.uniq = function () {
let newArr=[]
let flag=true
for(let i=0,len=this.length;i<len;i++){
let bool=newArr.includes(this[i])
if(bool===false){
if(this[i]!==this[i]){//排除NaN
if(flag){
newArr.push(this[i])
flag=false
}
}else{
newArr.push(this[i])
}
}
}
return newArr
}
let arr=[false, true, undefined, null, NaN, 0, 1, {}, {}, 'a', 'a', NaN]
console.log(arr.uniq())
本文介绍了一种使用indexOf和includes方法实现数组去重的算法,详细解释了如何通过这两种方法排除重复元素,包括特殊值NaN的处理,为JavaScript开发者提供实用的代码示例。
1618

被折叠的 条评论
为什么被折叠?



