引言:
数组去重的方法有很多种,本文首先简单列举几个例子,然后主要记录一种数组去重的思想。
数组去重方法
本节列出的方法都将借用js中数组的一些方法去实现。
1. 利用ES6 Set数据结构
我们知道Set是ES6新提出的一种集合数据结构,其特点是元素是唯一的,因此我们可以利用这一特点对数组进行去重
let arr = [1, 1, 2, 2, 2, 3, 4, 5, 5, 6]
let array = [...new Set(arr)]
console.log(array) //[1, 2, 3, 4, 5, 6]
2. 利用includes方法
includes表示数组/字符串中是否包含某个元素
/**
* 利用includes实现数组去重
* @param arr 传入的数组
*/
function unique(arr){
let array = []
for(let i = 0; i< arr.length; i++){
if(!array.includes(arr[i])){
array.push(arr[i])
}
}
return array
}
unique([1, 1, 2, 2, 2, 3, 4, 5, 5, 6])
// 以上方法也可以实现数组的去重
3. 利用find方法
/**
* 利用find实现数组去重
* @param arr 传入的数组
*/
function unique(arr){
let array = []
for(let i = 0; i< arr.length; i++){
if(!array.find(v =>{
return v === arr[i]
})){
array.push(arr[i])
}
}
return array
}
unique([1, 1, 2, 2, 2, 3, 4, 5, 5, 6])
利用对象去重
在这里,主要介绍下利用对象实现对数组的去重。JS中,对象属性的键值是不能重复的,我们可以利用这一特性,来实现对数组的去重,上代码,代码比较简单,应该都可以理解:
/**
* 利用对象实现数组去重
* @param arr 传入的数组
*/
function unique(arr){
let array = []
let obj = {}
for(let i = 0; i< arr.length; i++){
if(!obj.hasOwnProperty(arr[i])){ //对象中没有这个key值时,将其添加进去,同时给目标数组推入一个元素
obj[arr[i]] = i
array.push(arr[i])
}
}
return array
}
unique([1, 1, 2, 2, 2, 3, 4, 5, 5, 6])
经过测试,打印出来的数组为[1, 2, 3, 4, 5, 6],上面的方法也可以实现对数组的去重。