去除数组中的重复元素(基本数据类型元素)--详细解释
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 }