JavaScript 数组去重

1.实现方法:

  通过数组对象方法splice()可以实现数组元素的去重操作;

  通过遍历数组中的每一个元素,将该元素同它之后的所有元素进行逐一比较,若相同,则删除后面的元素,达到去重的目的;

2.splice()用法:  

splice(i,n,ele)方法:删除数组中指定元素,并将被删除的内容作为返回值返回;

  i:表示删除开始位置的索引;

  n:删除的个数;

  ele:可选参数,可传递一些元素,他们将会自动插入到开始位置索引前面;

1 var arrP = ['张飞','刘备','关羽','玛利亚'];
2 var result = arrP.splice(3,1,'孙尚香','鲁班','李元芳');
3 
4 console.log(result);
5 console.log(arrP);
6 
7 
8 [Log] ["玛利亚"] (1) 
9 [Log] ["张飞", "刘备", "关羽", "孙尚香", "鲁班", "李元芳"] (6)

 

3.编写去重函数

 1 function distinct(arr){
 2     //遍历数组中所有元素
 3     for (var i = 0; i < arr.length; i++){
 4         //遍历当前元素后的所有元素用于比较
 5         for (var j = i + 1; j < arr.length; j++){
 6             //如果相等,则证明出现重复元素,则删除索引j对应的元素
 7             if (arr[i] === arr[j]){
 8                 arr.splice(j,1);
 9                 //删除索引j所对应的元素后,后方的元素向前填充,使得索引j+1对应的元素索引变为j
10                 //通过j--将重新比较一次当前位置的元素,防止出现紧挨着的相同元素被忽略
11                 j--;
12             }
13         }
14     }
15     return arr;
16 }
17 
18 var arr1 = [1,2,2,5,'e',4,4,'m',8,5,'m',6,0,"a","e",5];
19 var arr2 = distinct(arr1);
20 
21 
22 console.log(arr2);
23 
24 
25 
26 [Log] [1, 2, 5, "e", 4, "m", 8, 6, 0, "a"] (10)

 

posted @ 2021-12-21 00:03  S_梦痕  阅读(49)  评论(0编辑  收藏  举报