目录:
1.filter()和indexOf()实现去重
let originalArray=[1,2,3,4,1,2,3,4]
let uniqueArray=originalArray.filter((item,index,array)=>{
return array.indexof(item)===index
})
//结果 uniqueArray===[1,2,3,4]
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。 filter()方法进行过滤
2.reduce()和includes()实现去重
let originalArray=[1,2,3,4,1,2,3,4]
let uniqueArray=originalArray.reduce((unique,item)=>{
unique.includes(item)?unique:[...unique,item]
},[])
//uniqueArray===[1,2,3,4]
reduce() 方法将数组缩减为单个值 includes()方法用来判断一个数组是否包含一个指定的值,如果是返回
true,否则false。
3.双重for循环+splice()
思路:利用双重for循环找出重复的元素,然后在使用splice()方法删除重复的一个。
function ArrayToHeavy(arr){
//遍历数组中的所有元素
for(var i=0,len=arr.length;i<len;i++){
for(var v=i+1;v<len;v++){
if(arr[i]===arr[v]){
arr.splice(v,1)
//splice方法会改变数组长度,所以要将数组长度len和下标v减一
len--;
v--
}
}
}
return arr
}
let a=[2,4,5,7,4,8,0,4,5,7,9,4,5,21];
console.log(ArrayToHeavy(a));
//结果:[2,4,5,7,8,0,9,21]
4.for循环+findlndex
该方法是利用了findlndex的特性,查找元素时,未找到返回-1,接下来就需要进行判断,如果是-1,说明没有找到,就往新数组添加元素。
var arr=[1,2,3,4,5,6,6,5,4,3,2,1]
function Array(arr){
let newarr=[]
for(let i=0; i<arr.length;i++){
newarr.indexof(arr[i]===-1?newarr.push(arr[i])):newarr
};
return newarr
}
console.log(Array(arr))
//[1,2,3,4,5,6]
5.sort循环
该方法是利用sort方法进行排序,进行循环,若原数组的i项和新数组的i-1不一致,就push进去
var arr = [1,2,3,4,5,6,6,5,4,3,2,1]
function Array (arr) {
arr = arr.sort()
let newArr = []
for(let i = 0;i<arr.length;i++){
arr[i] === arr[i-1] ? newArr : newArr.push(arr[i])
};
return newArr
}
console.log(Array(arr));
//[1,2,3,4,5,6]
6.Set
Es6中新增数据类型,最大的特点就是数据不重复。Set函数可接受数组(或者为类数组对象)作为参数来初始化,利用该特性也能对数组进行去重。
var arr = [1,2,3,4,5,6,6,5,4,3,2,1]
function Array (arr) {
// .new Set方法,返回是一个类数组.
// 需要结合 ...运算符,转成真实数组
return ([...new Set(arr)])
}
console.log(Array(arr));
若有不解,及时提出哦!
小作者在持续更新中…