顺晟科技
2021-06-16 10:34:08
189
1.遍历数组方法
这是最简单的阵列重复数据消除方法(方法索引)
实现思路:新建一个数组,遍历要重的数组,当值不在新数组中时加入新数组(indexOf为-1);
//www.oicqzone.com代码片段
var arr=[2,8,5,0,5,2,6,7,2];
函数unique1(arr){
var hash=[];
for(var I=0;长度;i ) {
if(hash.indexOf(arr[i])==-1){
hash . push(arr[I]);
}
}
返回哈希;
}
//www.oicqzone.com代码片段
2.数组下标判断方法
调用方法的索引与方法1具有相同的性能
实现思路:如果当前数组中ith项的个出现位置不是I,说明ith项是重复的,被忽略。否则,它存储在结果数组中。
//www.oicqzone.com代码片段
函数unique2(arr){
var hash=[];
for(var I=0;长度;i ) {
if(arr.indexOf(arr[i])==i){
hash . push(arr[I]);
}
}
返回哈希;
}
//www.oicqzone.com代码片段
3.分拣后相邻剔除法
实现思路:对传入的数组进行排序,排序后相同的值会相邻,然后遍历排序后的数组时,只有不重复之前值的值才会添加到新的数组中。
//www.oicqzone.com代码片段
函数unique3(arr){
arr . sort();
var hash=[arr[0]];
for(var I=1;长度;i ) {
if(arr[i]!=hash[hash.length-1]){
hash . push(arr[I]);
}
}
返回哈希;
}
//www.oicqzone.com代码片段
4.优化遍历数组方法(推荐)
实现思路:双层循环,外环表示从0到arr.length,内环表示从i 1到arr.length。
将没有重复的正确值放入新数组。(检测到重复值时,终止当前周期,进入下一轮外周期判断)
//www.oicqzone.com代码片段
函数unique4(arr){
var hash=[];
for(var I=0;长度;i ) {
for(var j=I ^ 1;j arr.lengthj ) {
if(arr[i]===arr[j]){
I;
}
}
hash . push(arr[I]);
}
返回哈希;
}
//www.oicqzone.com代码片段
5.ES6实施
基本思想:ES6提供了新的数据结构集。它类似于数组,但成员的值是的,没有重复的值。
Set函数可以接受一个数组(或类似数组的对象)作为初始化的参数。
函数unique5(arr){
var x=新集合(arr);
返回[.x];
}
扩展:如果它被复制,元素被删除
数组下标重复数据删除
//www.oicqzone.com代码片段
函数unique22(arr){
var hash=[];
for(var I=0;长度;i ) {
if(arr . index of(arr[I])==arr . last index of(arr[I]){
hash . push(arr[I]);
}
}
返回哈希;
}
//www.oicqzone.com代码片段
09
2022-04
29
2021-08
29
2021-08
28
2021-08
16
2021-06
16
2021-06