18910140161

JS实现数组去重 重复元素保留一个

顺晟科技

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代码片段

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航