for循环 splice去重
const arr = [1,1,1,2,2,3,4,5,6,3,4,2,4,1,]
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))
indexOf 去重
const arr = [1,1,1,2,2,3,4,5,6,3,4,2,4,1,]
function unique(arr) {
if(!Array.isArray(arr)){
console.log('type error!')
return
}
let array = []
for (let i=0;i<arr.length;i++){
if(array.indexOf(arr[i]) === -1){
array.push(arr[i])
}
}
return array
}
console.log(unique(arr))
sort()
const arr = [1,1,1,2,2,3,4,5,6,3,4,2,4,1,]
function unique(arr) {
if(!Array.isArray(arr)){
console.log('type error!')
return
}
arr = arr.sort()
let array = [arr[0]]
for(var i = 1; i<arr.length;i++){
if(arr[i] !== arr[i-1]){
array.push(arr[i])
}
}
return array
}
console.log(unique(arr))
includes
const arr = [1,1,1,2,2,3,4,5,6,3,4,2,4,1,]
function unique(arr) {
if(!Array.isArray(arr)){
console.log('type error!')
return
}
let array = []
for(var i = 1; i<arr.length;i++){
if(!array.includes(arr[i])){
array.push(arr[i])
}
}
return array
}
console.log(unique(arr))
filter
const arr = [1,1,1,2,2,3,4,5,6,3,4,2,4,1,]
function unique(arr) {
return arr.filter(function(item,index,arr){
return arr.indexOf(item,0) === index
})
}
console.log(unique(arr))
hasOwnProperty
const arr = [1,1,1,2,2,3,4,5,6,3,4,2,4,1,]
function unique(arr) {
let obj = {}
return arr.filter(function(item,index,arr){
return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
})
}
console.log(unique(arr))
递归
const arr = [1,1,1,2,2,3,4,5,6,3,4,2,4,1,]
function unique(arr) {
let array = arr
let len = array.length
array.sort(function(a,b){
return a-b
})
function loop(index){
if(index >=1){
if(array[index] === array[index -1]){
array.splice(index,1)
}
loop(index -1)
}
}
loop(len - 1)
return array
}
console.log(unique(arr))
reduce+includes
const arr = [1,1,1,2,2,3,4,5,6,3,4,2,4,1,]
function unique(arr) {
return arr.reduce((prev,cur)=> prev.includes(cur) ? prev : [...prev,cur],[])
}
console.log(unique(arr))
Map
const arr = [1,1,1,2,2,3,4,5,6,3,4,2,4,1,]
function unique(arr) {
let map = new Map()
let array = []
for(let i=0;i<arr.length;i++){
if(map.has(arr[i])){
map.set(arr[i],true)
}else{
map.set(arr[i],false)
array.push(arr[i])
}
}
return array
}
console.log(unique(arr))
Set
const arr = [1,1,1,2,2,3,4,5,6,3,4,2,4,1,]
function unique(arr) {
return [...new Set(arr)]
}
console.log(unique(arr))