第一类 for 循环
/* 双重for循环去重*/
function func0(array) {
const newArray = [];
for (let i = 0; i < array.length; i++) {
//1、第一层循环取出目标数组中的每一个元素itemOld
const itemOld = array[i];
let contain = false;
for (let j = 0; j < newArray.length; j++) {
//2、第二层循环取出新数组中的每一个元素itemNew
const itemNew = newArray[j];
//3、每个itemOld和每个itemNew逐一比较
if (itemOld === itemNew) {
//4、如果相等则存在,中断第二层循环
contain = true;
break;
}
}
//5、如果第二层循环执行完都没有中断则说明该元素不存在,则加入数组
if (contain === false) {
newArray.push(itemOld);
}
}
return newArray;
}
第二类 数组方法
2.1 indexOf
function func1(array) {
const newArray = [];
array.forEach((item) => {
if (newArray.indexOf(item) === -1) {
newArray.push(item);
}
});
return newArray;
}
2.2 includes
function func2(array) {
const newArray = [];
array.forEach((item) => {
if (newArray.includes(item) === false) {
newArray.push(item);
}
});
return newArray;
}
第三类 借助新的数据结构
3.1 利用对象key唯一去重
function func3(array) {
const obj = [];
array.forEach((item) => {
obj[item] = item;
});
return Object.values(obj);
}
3.2 利用 Set 去重
function func4(array) {
const set = new Set(array);
return [...set];
}
参考链接