const arr=[1,2,3,3,2]
方法一:Array.filter() + indexOf
arr.filter((item,index) => {
return arr.indexOf(item) === index;
})
方法二:使用 for...of + includes()
let result = []
for (let i of arr) {
!result.includes(i) && result.push(i)
}
return result
方法三:双重 for 循环
for (let i=0; i<arr.length; i++) {
for (let j=i+1; j<arr.length; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1);
// splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一
arr.length--;
j--;
}
}
}
return arr
方法四:Array.sort()
首先使用 sort() 将数组进行排序
然后比较相邻元素是否相等,从而排除重复项。
arr.sort((a,b)=> a - b;)
let result = [arr[0]]
for (let i=1; i<arr.length; i++) {
arr[i] !== arr[i-1] && result.push(arr[i])
}
return result
方法五:for...of + Object
利用对象的属性不能相同的特点进行去重
let result = []
let obj = {}
for (let i of arr) {
if (!obj[i]) {
result.push(i)
obj[i] = 1
}
}
return result
方法六:ES6的new Set()
return [...new Set(arr)]
方法七:reduce方法
arr.reduce((pre, cur) => {
if (!pre.includes(cur)) {
return pre.concat(cur);
} else {
return pre;
}
}, []);