数组去重方法有很多种,具体多少种没去统计,有简单的也有复杂的,在这我这举例一下比较常用的几种数组去重
- indexOf
//indexOf 判断一个数组里面是否存在某个值,如果存在返回所在的下标,如果不存在返回-1
const arr = ['小明', 1, 2, 4, 1, '小美', '小明']
const arr2 = []
for (let index = 0; index < arr.length; index++) {
const element = arr[index];
if (arr2.indexOf(element) === -1) {
arr2.push(element)
}
}
console.log(arr2); //["小明", 1, 2, 4, "小美"]
- ES6新增 Set方法
//Set 返回的是一个类数组,需要转一下
const arr = ['小明', 1, 2, 4, 1, '小美', '小明']
const arr2 = Array.from(new Set(arr))
const arr3 = [...new Set(arr)] //效果和Array.from(new Set(arr)) 一样
console.log(arr2, arr3); //["小明", 1, 2, 4, "小美"]
- includes
//includes 判断数组是否存在某个值,如果存在返回true,不存在返回false
const arr = ['小明', 1, 2, 4, 1, '小美', '小明']
const arr2 = []
for (let index = 0; index < arr.length; index++) {
const element = arr[index];
if (!arr2.includes(element)) {
arr2.push(element)
}
}
console.log(arr2);
使用sort、filter以及一些其他复杂的办法皆可以实现去重(但是不建议使用)