对数组进行去重复
定义数组
var arr = [11, 22, 32, 21, 11, 22, 56];//对数组进行去重复
/**
* 1.使用双重for循环
* 思路:对比前一项和后一项,如果相等删除后一项 把后边元素往前移 修正下标
*/
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);
/**
* 2.利用indexOf和lastindexOf对数组进行去重
* 思路:创建一个新空数组。遍历数组,判断数组元素是否存在于新数组中
*/
function unique(arr) {
// 创建一个新空数组
var newArr = [];
for (var i = 0; i < arr.length; i++) {
// 检查数组元素是否存在于新数组中
if (newArr.indexOf(arr[i]) === -1) {
// 将符合条件的数组元素添加到新数组中
newArr.push(arr[i]);
}
}
// 返回去重后的新数组
return newArr
}
console.log(unique(arr));
/**
* 3.includes 数组方法 检测数组元素是否包含在数组中 包含返回true 不包含返回false
* 参数:检测的数组元素 返回值:返回true/false 不修改原数组
*/
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));
/**
* 4.forEach + indexOf/lastindexOf 对数组进行去重
*/
function unique(arr) {
// 声明一个新空数组
let newArr = [];
arr.forEach(function (item) {
// 检查数组元素是否存在于新数组中
if (newArr.indexOf(item) === -1) {
// 将符合条件的数组元素添加到新数组中
newArr.push(item);
}
});
// 返回去重后的新数组
return newArr
}
console.log(unique(arr));
/**
* 5. filter + includes/indexOf/lastindexOf 对数组进行去重
*/
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));
/**
* 6.利用set集合进行去重复 set集合内部成员是不会重复的
* 数据结构 集合
*/
// 将数组转为set集合,去除重复的成员
var res = new Set(arr);
// 1.将集合转为数组
console.log(Array.from(res));
// 2.利用拓展运算符 ... 将所有set成员进行展开 并放入新数组
// console.log([...res]);