数组去重有几种方法?

1.最简单的set去重 var aa=[23,45,23,23,34,2,34,66,78]; var aa=new set(aa); console.log(aa);2.用indexOf()来去重 var sum=[ ]; //给它一个空的数组 for(var i=o;i<aa.length;i++){ //如果没有找到字符串,则返回-1,检索是否存在。 if(sum.indexOf(aa[i]>=0){ continue;//结束本次循环 }else{ sum.push(aa[i]); } } console.log(sum);3.用sort排序后去重 function fn(arr){ let newArr = [] arr.sort((a,b)=>{ return a-b }) arr.forEach((val,index)=>{ if(val != arr[index+1]){ newArr.push(val) } }) return newArr; }4.数组去重,根据里面相同的ID去重,键值var str=[ {name:”张三”,id:1}, {name:”李四”,id:2}, {name:”王五”,id:2}, {name:”小明”,id:3}, {name:”小兰”,id:1}, ];//声明一个数组var result=[];//声明一个对象var obj={};for(var i=0;i<str.length;i++){ if(!obj[str[i].id]){ result.push(str[i]); obj[str[i].id]=true; }}console.log(result);5.普通去重的方式function removeRepeat(arr) { for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]==arr[j]){ arr.splice(j,1); //索引,删除长度 j–; } } } console.log(arr); return arr;}removeRepeat([23, 45, 23, 23, 34, 2, 34, 66, 78])

发表评论