- 根据set数据结构值不能重复的特点, 先转为set结构再转回数组
let arr = [1,2,3,1,2]
let unique = [...new Set(arr)]
- 双重for循环
function unique(arr) {
var res = []
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < res.length; j++) {
if (arr[i] === res[j]) {
break
}
}
if (j === res.length) {
res.push(arr[i])
}
}
return res
}
- 外层for循环, 内部使用includes判断是否已存在
function unique(arr) {
let res = []
for (let i = 0; i < arr.length; i++) {
if (!res.includes(arr[i])) {
res.push(arr[i])
}
}
return res
}
- 先排序. 使用for循环遍历, 内部只要比较后一个与前一个是否相等即可
function unique(arr) {
let res = []
let sortArr = arr.concat().sort()
for (let i = 0; i < sortArr.length; i++) {
if (sortArr[i] !== sortArr[i-1] || i === 0) {
res.push(sortArr[i])
}
}
return res
}
- 使用filter遍历 , 内部判断改元素是否第一次出现
function unique(arr) {
let arr = arr.filter((item, index, arr) => {
return arr.indexof(item) === index
})
return res
}