let arr = [1, 2, 3, 4, 3, 2, 3, 4, 6, 7, 6]
方法1,使用es6方法 [...new Set(arr)]
let unique = (arr) => [...new Set(arr)]
console.log(unique(arr));
方法2 利用indexOf 查找某个指定的元素在数组中首次出现的位置,如果返回值不等于-1,并且返回值不等于下标,则数组通过splice,去除多余的数据(修改原数组)
for (let i = 0; i < arr.length; i++) {
let index = arr.indexOf(arr[i])
if(index>-1 && index !== i ) {
arr.splice(i,1)
i--
}
}
console.log(arr);
方法三 利用indexOf, 将去重的数据放在新数组中(不修改原数组)
let result =[]
for (var i = 0; i < arr.length; i++) {
if(result.indexOf(arr[i]) == -1) {
result.push(arr[i])
}
}
console.log(result)
方法四: 双重for循环,然后splice去重
function unique(arr){
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)
j--
}
}
}
return arr
}
console.log(unique(arr));
方法五: 利用: filter indexOf
let unique = (arr) => {
return arr.filter((item,index)=> {
return arr.indexOf(item) == index
})
}
console.log(unique(arr));
let unique = (arr) => {
let seen = new Map();
return arr.filter((item)=> {
return !seen.has(item) && seen.set(item,1)
})
}
console.log(unique(arr));