- 新建数组法
- 利用object/map/set去重
- Filter与indexOf法
- 先排序再移除法
- 同一个数组删除法
// 新建一个数组 如果新数组中没有的元素才加入进去
let a = ["a", "a", 1, 1, 2, 2, "b", "b"];
let newArr = [];
for (let i = 0; i < a.length; i++) {
let exist = false;
for (let member of newArr) {
if (member === a[i]) {
exist = true;
break;
}
}
if (!exist) {
newArr.push(a[i]);
}
}
// 利用对象对数组去重
let a = ['a','a',1,1,2,2,'b','b']
let b = {}
a.forEach((item,i)=>{
b[item] = item
})
Array.from(Object.values(b))
//利用map对数组去重
let a = ['a','a',1,1,2,2,'b','b']
let b = new Map()
a.forEach((item,i)=>{
b.set(item,item)
})
Array.from(b.values())
//利用set去重
let a = ['a','a',1,1,2,2,'b','b']
let c = newe Set(a)
Array.from(c)
//简化写法 [...new Set(a)]
// 利用filter方法去重
let a = [1,2,'a',1,2,2,2,'a','b']
let newArr = []
for(let i=0;i<a.length;i++){
//说明不是重复的元素
if(i=== a.indexOf(a[i])){
newArr.push(a[i])
}else if(a.indexOf(a[i])>=0){
continue
}
}
// 简单写法 a.filter((item,i)=>i===a.indexOf(item))
// 先排序后删除重复元素
let a = [1,2,'a',1,2,2,'a','b']
a.sort()
//从后往前遍历
while(l--&&l>0){
if(a[l] === a[l-1]){
a.splice(l, 1)
}
}
//从前往后遍历
for(let i=0;i<l - 1;i++){
if(a[i] === a[i+1]){
a.splice(i,1)
l--; //长度--
i--; //下标减一 否则会跳过一个
}
}
//同一个数组删除法
let a = [1,2,'a',1,2,2,'a','b']
for(let i=0;i<a.length;i++){
for(let j=i+1;j<a.length;j++){
if(a[i]===a[j]){
a.splice(i,1)
l--
i--
break;
}
}
}