一.数组去重的要求是什么?
数组中有重复的元素的时候,删去重复的元素,重复的元素只保留一个。
比如['a','b','c','d','b','c','c']
数组去重后的数组:['a','b','c','d']
二.如何实现数组去重?
- 定义一个新的空数组,把去重结果的数据放在里面。
- 把要去重的旧数组先遍历一遍,在新数组里面查找是否有旧数组的数据。如果在新数组里面数据有旧数据的话,那么就不存(说明重复了)。如果没有,那就存储数据(说明没有重复)。
- 如何判断在新数据中是否有旧数据?用新数据.indexOf(数组元素),如果返回-1.则代表没有重复过,就可以存储数据进去。(indexOf()?方法在数组中搜索元素值并返回其位置)
代码1
function unique(arr){
//定义放入去重后的新数组newarr
var newarr =[];
//遍历旧数组中的元素
for(var i=0;i<arr.length;i++)
{
//判断是否新数组内有就数组的元素,如果没有,就把元素添加到新数组中
if(newarr.indexOf(arr[i])===-1){
newarr.push(arr[i]);
}
}
return newarr;
}
var demo=unique(['a','b','c','c','c','d','w','z']);
console.log(demo);
旧数组的遍历可以用foreach()方法
代码2
function unique(arr){
var newarr =[];
arr.forEach(item => {
if(newarr.indexOf(item)===-1){
newarr.push(item);}
});
return newarr;
}
var demo=unique(['a','b','c','c','c','d','w','z']);
console.log(demo);
?代码3
用ES6新出的Set()来去重!!(破音)
function unique(arr){
// 转换成set集合
let set=new Set(arr);
//set集合转换成真正的数组
return Array.from(set);
}
var demo=unique(['a','b','c','c','c','d','w','z']);
console.log(demo);
写成一句也可以!!
function unique(arr){
return Array.from(new Set(arr));
}
var demo=unique(['a','b','c','c','c','d','w','z']);
console.log(demo);
再简化一下!用数组扩展的方法!
function unique(arr){
return ([...new Set(arr)]);
}
var demo=unique(['a','b','c','c','c','d','w','z']);
console.log(demo);
?
?
|