数组去重复
创建数组
let arr = Array.from({ length: 20 }, () => Math.random() * 10 | 0)
console.log(arr)
向前循环比较
for(let i=0;i<arr.length;i++){
for(let k=0;k<i;k++){
if(arr[i]===arr[k]){
arr.splice(i, 1);
i--;
}
}
}
console.log(arr)
向后循环比较
for(let i=0;i<arr.length;i++){
for(let k=i+1;k<arr.length;k++){
if(arr[i]===arr[k]){
arr.splice(i, 1);
i--;
}
}
}
console.log(arr)
不修改原数组
let rs=[];
for(let i=0;i<arr.length;i++){
for(let k=i+1;k<arr.length;k++){
if(arr[i]===arr[k]){
//跳过
k=++i;
}
}
rs.push(arr[i]);
}
console.log(rs);
跟结果集比较
let rs=[];
for(let i=0;i<arr.length;i++){
if(rs.indexOf(arr[i])===-1){
rs.push(arr[i]);
}
}
console.log(rs);
使用filter方法
console.log(
arr.filter((item,index)=>{
return arr.indexOf(item)===index;
})
)
使用对象
let tag={};
let rs=[];
for(let i=0;i<arr.length;i++){
if(!tag[arr[i]]){
rs.push(arr[i]);
tag[arr[i]]=true;
}
}
console.log(rs)
ES6方法
let rs=Array.from(new Set(arr))
console.log(rs)
最精简方法
console.log([...new Set(arr)])