方法一
使用
forEach
和indexOf
方法检测
let arr=[1,2,3,4,5,2,2,1,2]
function unique(arr) {
//声明一个空数组
const result=[]
//遍历原数组
arr.forEach(item=>{
//检测result数组中是否包含这个元素
if(result.indexOf(item)===-1){
//若没有该元素,则插入到result中
result.push(item)
}
})
return result
}
console.log(unique(arr)); //[1,2,3,4,5]
方法二
使用
forEach
和对象容器
let arr = [1, 3, 3, 2, 1, 5, 5, 4, 2]
function unique2(arr) {
//声明空数组
const result = []
//声明空对象
const obj = {}
//遍历数组
arr.forEach(item => {
if (obj[item] === undefined) {
//将item作为下标存储在 obj 中
obj[item] = true
result.push(item)
}
})
return result
}
console.log(unique2(arr)); //[1,3,2,5,4]
方法三
利用ES6语法:
from
+Set
或者...
+Set
let arr = [1,2,3,1,2,3,1,2,3]
function unique3(arr) {
//第一种写法
//将数组转化为集合 Set
let set=new Set(arr)
//将set展开创建一个数组
let array=[...set]
return array
//第二种写法
//return [...new Set(arr)]
}
console.log(unique3(arr)); //[1,2,3]