方法1.双重循环
let arr = [1, 2, 5, 2, 6, 4, 3, 6, 3, 6, 8, 4, 8, 5, 7]
function fn(a) {
for (let i = 0; i < a.length; i++) {
for (let j = 0; j < i; j++) {
if (a[i] == a[j]) {
a.splice(i, 1)
i--
}
}
}
return a
}
fn(arr)
console.log(arr)
方法2.reduce
let arr = [1, 5, 2, 3, 6, 4, 7, 9, 8, 0, 3, 5, 4, 6, 2]
function fn(a) {
return a.reduce((result, current) => {
if (!result.includes(current) ){
result.push(current)
}
return result
}, [])
}
console.log(fn(arr))
方法3.set
Set是ES6提供的新的数据结构,类似于数组,但值都是唯一的,不会有重复的值;
let arr = [1, 5, 2, 3, 6, 4, 7, 9, 8, 0, 3, 5, 4, 6, 2]
function gn(a){
return [...new Set(a)]
}
console.log(gn(arr))
方法4.利用空数组 " let newArr = []"
let arr = [1, 5, 2, 3, 6, 4, 7, 9, 8, 0, 3, 5, 4, 6, 2]
function fn(a) {
let newArr = []
for (let i = 0; i < a.length; i++) {
if (newArr.indexOf(a[i]) === -1) {
newArr.push(a[i])
}
}
return newArr
}
console.log(fn(arr))
方法5.利用filter
let arr = [1, 5, 2, 3, 6, 4, 7, 9, 8, 0, 3, 5, 4, 6, 2]
function fn(){
return arr.filter((item,index,arr)=>
arr.indexOf(item)==index)
}
console.log(fn(arr))//(10) [1, 5, 2, 3, 6, 4, 7, 9, 8, 0]