目录
2.利用indexOf和lastIndexOf对数组进行去重
4.forEach+indexOf/lastIndexOf/includes 对数组进行去重
5.使用filter和includes/indexOf/lastIndexOf 对数组进行去重
1.使用双层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]) {
//删除后一项
arr.splice(j, 1)
// 修正下标
j--
}
}
}
return arr
}
let arr = [11, 22, 33, 43, 22, 11, 84] //对数组进行去重复
unique(arr)
console.log(arr)
2.利用indexOf和lastIndexOf对数组进行去重
/**
* 思路:创建一个新空数组 遍历数组 判断是否存在于新数组中 不存在则进行添加
*/
function unique(arr) {
//创建一个新的空数组
let newArr = []
for (let i = 0; i < arr.length; i++) {
//检测数组元素是否存在于新数组中 不存在添加
if (newArr.indexOf(arr[i]) == -1) {
newArr.push(arr[i])
}
}
//返回去重复的新的数组
return newArr
}
let arr = [11, 22, 33, 43, 22, 11, 84] //对数组进行去重复
console.log(unique(arr))
3.includes 数组方法
/**
* 检测数组元素是否包含在数组中 包含返回true 不包含返回false
* 参数:检测的数组元素 返回true/false 原数组
*/
let res = arr.includes(33)
console.log(res, arr)
function unique(arr) {
//声明一个新的空数组
let newArr = []
for (let i = 0; i < arr.length; i++) {
if (!newArr.includes(arr[i])) {
//将符合条件的数组元素添加到新数组中
newArr.push(arr[i])
}
}
//将符合条件的新的数组返回
return newArr
}
let arr = [11, 22, 33, 43, 22, 11, 84] //对数组进行去重复
console.log(unique(arr))
4.forEach+indexOf/lastIndexOf/includes 对数组进行去重
function unique(arr) {
//创建新数组
let newArr = []
//循环数组元素
arr.forEach(function(item) {
if (newArr.lastIndexOf(item) === -1) {
newArr.push(item)
}
// if (!newArr.indexOf(item)) {
// newArr.push(item)
// }
})
//返回不重复数组
return newArr
}
let arr = [11, 22, 33, 43, 22, 11, 84] //对数组进行去重复
console.log(unique(arr))
5.使用filter和includes/indexOf/lastIndexOf 对数组进行去重
function unique(arr) {
let newArr = []
arr.filters(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)
})
return newArr
}
let arr = [11, 22, 33, 43, 22, 11, 84] //对数组进行去重复
console.log(unique(arr))
6.利用set集合进行去重复 内部成员是不会重复的
let arr = [11, 22, 33, 43, 22, 11, 84] //对数组进行去重复
//将数组转为set集合 去重复成员
let res = new Set(arr)
//1.将set集合转为数组
// console.log(Array.from(res))
// 2.拓展运算符 ... 将所有set进行展开
console.log([...res])