见代码及其注释
function removeDup(arr){//数组去重
let n = arr.length;
let ans1 = arr.slice(0);
let ans2 = arr.slice(0);
let ans3 = [];
let ans4 = [];
let ans5 = [];
let ans6 = [];
let ans7 = [];
//方法一:利用set
ans1 = Array.from(new Set(ans1));
//方法二:双重for
for(let i = 0;i<ans2.length;i++){
for(let j = i + 1;j<ans2.length;j++){
ans2[i] === ans2[j] ? ans2.splice(j--,1) : 0
}
}
//方法三:利用indexOf 缺陷:无法去重NaN
for(let i = 0;i<n;i++){
ans3.indexOf(arr[i]) == -1 ? ans3.push(arr[i]) : 0
}
//方法四:obj属性 缺陷:把字符串和数字相同的去掉了
var obj = {};
for(let i = 0;i<n;i++){
if(!obj[arr[i]]){
ans4.push(arr[i]);
obj[arr[i]] = 1
}else{
obj[arr[i]]++
}
}
//方法五:利用includes
arr.forEach((val,idx) => {
ans5.includes(val) ? 0 : ans5.push(val)
})
//方法六:利用hasOwnProperty
var obj = {}
arr.forEach((val,idx) => {
if(!obj.hasOwnProperty(typeof val + val)){
ans6.push(val);
obj[typeof val + val] = true;
}
})
//方法七:利用map
let map = new Map()
arr.forEach((val,idx) => {
if(!map.has(val)){
ans7.push(val)
map.set(val,1)
}
})
return {
ans1 : ans1,
ans2 : ans2,
ans3 : ans3,
ans4 : ans4,
ans5 : ans5,
ans6 : ans6,
ans7 : ans7
}
}