数组去重
方法一
1、依次拿出数组中的每一项(排除最后一项
:最后一项后面没有需要比较的内容)
2、和当前拿出项后面的每一项
依次比较
3、如果发现有重复的,我们把找到的这个重复项
在原数
组中删除
掉(splice)
4、i--
防止数组塌陷
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| var arr=[1,2,3,2,3,4,3,4,5]
for(var i=0;i<arr.length-1;i++){ var item =arr[i]; for(var j=i+1;j<arr.length;j++){ if(item === arr[j]){ arr.splice(j,1); i--; } } } console.log(arr)
|
方法2:基于对象的属性名不重复来实现高性能的数组去重
1、创建一个空对象
2、依次遍历数组中的每一项,把每一项存储的值,当做对象的属性名和属性值存储起来
3、在存储之前我们先判断当前对象中是否已经存在这个属性名
了,如果存在,说明之前有这一项存储的操作,说明重复了,此时我们把当前项
在数组中删除
即可
4、i--
防止数组塌陷
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
var arr=[1,2,3,2,3,4,3,4,5] var json={}; for(var i=0;i<arr.length;i++){ var item=arr[i]; if(typeof json[item]!=='undefined'){
arr[i]=arr[arr.length-1]; arr.length-1; i--; continue; } json[item]=item; } console.log(arr)
|
方法三、Array.from(new Set(arr))
1 2 3 4 5
| var arr=[1,2,3,2,3,4,3,4,5]
var arr2=Array.from(new Set(arr)) console.log(arr2)
|