<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>数组去重(5种)</title> </head> <body> </body> </html> <script> var ary1 = [1, 2, 1, 2, 1, 23, 4, 1, 23, 24, 4, 5, 2, 3, 6, 7]; var arr=[]; //第一种方案 //for循环,includes,push for(var i=0;i<ary1.length;i++){ if(!arr.includes(ary1[i])){ //也可以使用:arr.indexOf(ary1[i]))==-1来判断 //判断arr中有没有ary[i],没有的时候才往里面放 arr.push(ary1[i]); } } console.log(arr); //第二种 var ary1 = [1, 2, 1, 2, 1, 23, 4, 1, 23, 24, 4, 5, 2, 3, 6, 7]; //查看数组的每一项,看他的indexOf和lastIndexOf是否相等,如果不相等说明至少出现两次,我们删除第一个.... for (var i=0;i<ary1.length;i++){ if(ary1.indexOf(ary1[i])!=ary1.lastIndexOf(ary1[i])){ //删除数组的某一项 splice(i,1) ary1.splice(i,1); //一定要注意,循环遍历数组的每一项的时候,如果删除数组的当前项,为了防止数组塌陷,一定要记住让i--, i--; } } console.log(ary1); //第三种:使用filter实现数组去重 var ary1 = [1, 2, 1, 2, 1, 23, 4, 1, 23, 24, 4, 5, 2, 3, 6, 7]; var arr=ary1.filter(function (item,index) { //每拿到一项,然后去看之前组成的数组中有没有这一项,如果有不留下,没有的话留下 return !(ary1.slice(0,index).includes(item)); }); console.log(arr); //第四种,对象的特点,属性名不可以重复,后面会覆盖前面的 //实现了去重排序 var obj={}; var arr=[]; for (var key in ary1){ obj[ary1[key]]=ary1[key] } for(var key in obj){ arr.push(obj[key]) } console.log(arr); //第五种 用 Set var ary=[1,2,1,2,1,2,true,NaN,true,"1","1"]; console.log([...new Set(ary)]); </script>
数组去重(5种)
最新推荐文章于 2024-08-21 15:16:11 发布