// 1
Array.from(new Set(arr))
// 2
let obj = {}
for(let i = 0; i< arr.length; i++){
let item = arr[i]
if(obj[item] !== undefined){
arr.splice(i, 1) // 删除
i--;//删除后,防止数组塌陷
continue;
}
obj[item] = item
}
// 3
function removalArr (arr) {
let obj = {}
for(let i=0;i<arr.length;i++){
let item = arr[i]
if(obj[item] !== undefined){
arr[i] = arr[arr.length -1]
arr.length--;
i--;
}
obj[item] = item
}
return arr
}
//4
let newArr = arr.filter((item, index) => arr.indexOf(item) === index)
//5
let obj = {}
arr.filter(item => obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item = true]))
indexOf 对比 includes
includes 可以检测 NaN,内部使用了Number.isNaN 进行匹配, indexOf 不能检测 NaN