方法一:使用双层for循环
核心思路:对比前一项和后一项 如果相等删除后一项 把后边的元素往前移 修正下标
var arr = [11, 22, 32, 21, 11, 22, 56];
function unique(arr) {
// 数组得前一项
for (var i = 0; i < arr.length; i++) {
// 数组得后一项
for (var j = i + 1; j < arr.length; j++) {
// 判断前一项和后一项是否相等 相等删除后一项 修正下标
if (arr[i] === arr[j]) {
// 删除后一项
arr.splice(j, 1);
// 修正下标
j--;
}
}
}
return arr
}
unique(arr);
console.log(arr);
方法二:利用indexOf和lastIndexOf对数组进行去重
核心思路:创建一个新空数组 遍历数组 判断数组元素是否存在于新数组中 不存在则进行添加
var arr = [11, 22, 32, 21, 11, 22, 56];//对数组进行去重复
function unique(arr) {
// 创建一个新的空数组
var newArr = [];
for (var i = 0; i < arr.length; i++) {
// 检测数组元素是否存在于新数组中 不存在添加
if (newArr.lastIndexOf(arr[i]) === -1) {
newArr.push(arr[i])
}
}
// 返回去重后的新的数组
return newArr;
}
console.log(unique(arr));
方法三:includes 数组方法
核心思路:检测数组元素是否包含在数组中若包含返回true,不包含返回false
var arr = [11, 22, 32, 21, 11, 22, 56];//对数组进行去重复
var res = arr.includes(88);
console.log(res, arr);
function unique(arr) {
// 声明一个新空数组
let newArr = [];
for (var i = 0; i < arr.length; i++) {
if (!newArr.includes(arr[i])) {
// 将符合条件得数组元素添加到新空数组中
newArr.push(arr[i])
}
}
// 将符合条件的新的数组返回
return newArr
}
console.log(unique(arr));
方法四:forEach + indexOf/lastIndexOf/includes 对数组进行去重
var arr = [11,22,32,21,11,22,56];
function unique(arr){
// 创建新的空数组
let newArr = [];
// 循环数组元素
arr.forEach(function(item){
// if(newArr.lastIndexOf(item)===-1){
// newArr.push(item)
// }
if(!newArr.includes(item)){
newArr.push(item)
}
})
// 返回不重复数组
return newArr
}
console.log(unique(arr));
方法五:使用filter和includes/indexOf/lastIndexOf实现数组去重
var arr = [11,22,32,21,11,22,56];
function unique(arr){
let newArr = [];
return arr.filter(function(item){
// 三目运算符
// return newArr.includes(item)?"":newArr.push(item)
return newArr.indexOf(item)!==-1?"":newArr.push(item)
// return newArr.lastIndexOf(item)!==-1?"":newArr.push(item)
})
}
console.log(unique(arr));
方法六:利用set集合进行去重复 内部成员不会重复
var arr = [11, 22, 32, 21, 11, 22, 56];
// 将数组转为set集合 去除重复成员
var res = new Set(arr);
console.log(res);
// 1.将set集合转为数组
// console.log(Array.from(res));
// 2.利用拓展运算符 ... 将所有set成员进行展开
console.log([...res]);
以上就是一些数组去重方法
运行结果如下: