数组去重常用的两种方法
includes()方法和indexOf()
1.includes()数组去重实现原理
includes()方法来判断一个数组是否包含一个指定的值,根据情况,如果包含就返回true,不包含就返回false
Array.isArray() 用于确定传递的值是否是一个数组
var arr = [1,1,15,15,true,false,true,false,NaN,0,"0"]
function fn(arr){
if(!Array.isArray(arr)){
cosloe.log('type error!')
return
}
var array = []
for(var i = 0; i < arr.length; i++){
if(!array.includes(arr[i])){
array.push(arr[i])
}
}
return array
}
console.log(fn(arr))
//(7) [1, 15, true, false, NaN, 0, "0"]
2、indexOf()数组去重实现的原理
数组的indexOf()方法可返回某个指定的元素在数组中首次出现的位置。该方法首先定义一个空数组arrray,然后调用indexOf方法对原来的数组进行遍历判断,如果元素不在array中,则将其push进array中,最后将res返回即可获得去重的数组.(判断新创建的数组中是否有a[i],如果没有indexOf返回-1,并且把a[i]放入该新数组中)
var arr = [1,1,15,15,true,false,true,false,NaN,0,"0"]
function fn(arr){
if(!Array.isArray(arr)){
console.log('type erreor')
return
}
let array = []
for(var i = 0; i < arr.length; i++){
if(array.indexOf(arr[i]) === -1){
array.push(arr[i])
}
}
return array
}
console.log(fn(arr))
//[1, 15, true, false, NaN, 0, "0"]