1、使用ES6中的new Set
const arr=[1,2,3,1,1,121,121]
let newArr= [...new Set(arr)]
console.log(newArr)
2、for循环 + indexOf
const arr=[1,2,3,1,1,121,121]
let newArr = []
for(let i = 0; i < arr.length; i++){
if(newArr.indexOf(arr[i])<0){
newArr.push(arr[i])
}
}
console.log(newArr)
3、for循环 + includes
const arr=[1,2,3,1,1,121,121]
let newArr = []
for(let i = 0; i < arr.length; i++){
if(!newArr.includes(arr[i])){
newArr.push(arr[i])
}
}
console.log(newArr)
4、fillter() + indexOf
const arr = [1, 2, 3, 1, 1, 121, 121]
let newArr = []
//filter生成一个新的数组,数组中的元素为 indexOf首次查找的元素下标
newArr = arr.filter((item, index) => {
return arr.indexOf(item) === index
})
console.log(newArr);
5、对数组对象类型的元素去重
根据 对象中的某个 键值 来进行去重
const arr = [
{
id: 1,
name: 'zs'
},
{
id: 2,
name: 'ls'
},
{
id: 3,
name: 'wu'
},
{
id: 4,
name: 'ml'
},
{
id: 2,
name: 'zs'
}
]
const key = 'id'
newArr = Array.from(new Set(arr.map(item => item[key]))).map(name => {
return arr.find(item => item[key] === name)
})
console.log(newArr )