1. ES6 Set实现去重 (ES6最常用)
let unique = (arr) => [...new Set(arr)]
2. indexOf实现去重
let array = [8, 8, '8','9'];
function unique(array) {
var res = [];
for (let i = 0, len = array.length; i < len; i++) {
let current = array[i];
if (res.indexOf(current) === -1) {
res.push(current)
}
}
return res;
}
console.log(unique(array));
3. filter实现去重
let array = [1, 2, 1, 1, '1'];
function unique(array) {
let res = array.filter(function(item, index, array){
return array.indexOf(item) === index;
})
return res;
}
console.log(unique(array));
4. 双层for循环实现去重
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]){ //第一个等同于第二个,splice方法删除第二个
arr.splice(j,1);
j--;
}
}
}
return arr;
}
5.includes实现去重
function unique(arr) {
if (!Array.isArray(arr)) {
console.log('type error!')
return
}
let array =[];
for(let i = 0; i < arr.length; i++) {
if( !array.includes( arr[i]) ) {//includes 检测数组是否有某个值
array.push(arr[i]);
}
}
return array
}
6.hasOwnProperty实现去重
function unique(arr) {
var obj = {};
return arr.filter(function(item, index, arr){
return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
})
}