Loading

去除数组中的重复元素(基本数据类型元素)--详细解释

 

 1 //方法一:创建一个临时数组,通过indexOf这个数组方法,实现重复元素的去除:即遍历原数组的同时,检验原数组的元素在临时数组是否已经存在,
 2 //若存在,说明该元素已经重复了,则不添加到临时数组中,否则,说明元素为第一次出现,可以添加到临时数组中。
 3 function deleteRepeat(arr){
 4   //定义一个临时数组
 5   let newArr = [];
 6   //遍历原数组,使用临时数组保存不重复的元素
 7   //ES6遍历
 8   arr.forEach(function(val){
 9     if(newArr.indexOf(val) === -1){
10       newArr.push(val)
11     }
12   })
13   //for循环遍历
14   //for(let i = 0; i < arr.length; i++){
15   //  if(newArr.indexOf(arr[i]) === -1){
16   //    newArr.push(arr[i])
17   //  }
18   }
19   return newArr;
20 }
21 
22 //方法二:定义一个哈希表,遍历数组元素,把数组元素作为哈希表的键,值为布尔值,若为true,说明该元素为重复元素,否则为第一次出现,则应该把该元素
23 //存入临时数组,同时更新哈希表的键值对
24 function deleteRepeat(arr){
25   let hash = {};
26   let result = [];
27   arr.forEach(function(val){
28     //如果哈希表还没有这个属性,说明是第一次遍历到
29     if(!hash[val]){
30       result.push(val);
31       hash[val] = true;
32     }
33   })
34   return result;
35 }
36 //方法三:遍历原数组元素,判断当前元素的值第一次出现的位置是否等于当前元素的索引。也使用了数组方法indexOf():返回指定值第一次出现的位置
37 //ES6--forEach实现
38 function deleteRepeat(arr){
39   let result = [];
40   arr.forEach(function(val, index){
41     if(arr.indexOf(val) === index){
42       result.push(val)
43     }
44   })
45   return result;
46 }
47 //for循环
48 function deleteRepeat(arr){
49   let result = [];
50   for(let i = 0; i < arr.length; i++){
51     if(arr.indexOf(arr[i]) === i){
52       result.push(arr[i])
53     }
54   }
55   return result;
56 }
57 //ES6中新添的数据结构Set
58 function deleteRepeat(arr){
59   //以该数组创建set集合,set集合只包含不重复的元素,再通过`...`扩展运算符获得数组
60   return [...new Set(arr)]
61 }

 

 

posted @ 2020-08-19 01:56  姑苏天阳  阅读(761)  评论(1编辑  收藏  举报