当前位置: 首页 > Web前端 > JavaScript

数组去重方法合集(二)

时间:2023-03-26 21:05:33 JavaScript

前面的方法都是ES3的方法,也就是说如果需要兼容低版本浏览器,可以参考前面的方法。今天要讲的是ES5方法。ES5中新增了几个数组方法,比如indexOf和forEach,所以第一个方法先用这两个。其实它的原理就是比较前一个元素和后一个元素。前后对比不明白的同学可以去上一篇看!正好可以多看一本,字不多也能看懂!方法一:索引比较法:先创建旧数组和新数组,并使用一个空的新数组vararr=[3,5,2,5,7,23,5,7];varnewArr=[];那么给老数组使用了forEach方法,为什么要用这个呢?我们都知道以前用过for循环的方法,但是ES5提供的几种遍历方法都可以接收一个参数,分别是:数组元素,索引,数组本身。这些东西直接拿来用,是不是很方便?函数fn(a,b,c){}arr.forEach(fn);得到所有的东西之后,需要判断前后的值是否相同使用indexOf,它的作用是检测数组中是否存在该值,不存在则返回-1。那么不存在就是没有找到一样的,这就是我们需要的,所以push。if(arr.indexOf(a,(b+1))==-1){newArr.push(a);}重新整理代码,写一个完整的vararr=[3,5,2,5,7,23,5,7];varnewArr=[];functionfn(a,b,c){if(arr.indexOf(a,(b+1))==-1){newArr.推(一);}}arr.forEach(fn);console.log(newArr);方法2索引查找法:接下来看索引查找法,当然也是ES5提供的新方法。首先得到一个旧数组和一个新数组。先给新数组赋值,再给旧数组的第一个,这样后面比较容易。vararr=[3,5,2,7,23,5,7];varnewArr=[arr[0]];判断新数组的值是否与旧数组的值相同,如果不相同,则使用indexOf查看元素,如果没有找到,返回-1,如果没有找到,则不存在,所以推。对于(vari=1;i