数组去重的方法以及优化和兼容
1.使用两层循环(一般不推荐,过于麻烦)
2.使用数组的includes属性,判断是否存在该数值
function uniq(arr) { var myArr = []; for(var i=0;i<arr.length;i++) { if(!myArr.includes(arr[i])) myArr.push(arr[i]); } return myArr; }
不兼容IE
3.使用数组的indexOf()属性
function uniq(arr){ var myArr = []; for(var i =0;i<arr.length;i++) { if(myArr.indexOf(arr[i])==-1) { myArr.push(arr[i]); } } return myArr; }
不兼容IE6-8
4.使用set去重
Array.from(new Set(arr))
不兼容IE6-10
5.利用对象或者Map去重
function uniq(arr){ var obj={}; var myArr=[]; for(var i=0;i<arr.length;i++){ var key=typeof(arr[i])+arr[i];//对象的key只有字符串形式 if(obj[key]!==1){ obj[key]=1; myArr.push(arr[i]) } } return myArr; }
兼容IE