1.使用for循环加indexOf数组
var arr=[1,1,2,2,3,3]; var arr2=[]; for(var i=0;i<arr.length;i++){ if(arr2.indexOf(arr[i])==-1){ arr2.push(arr[i]); } } console.log(arr2);
2.使用for循环加includesspa
var arr=[1,1,2,2,3,3]; var arr2=[]; for(var i=0;i<arr.length;i++){ if(!arr2.includes(arr[i])){ arr2.push(arr[i]); } } console.log(arr2);
3.使用ES6中的set对象code
Set 对象容许你存储任何类型的惟一值,不管是原始值或者是对象引用。对象
Set 对象存储的值老是惟一的,因此须要判断两个值是否恒等。有几个特殊值须要特殊对待:blog
var arr=[1,1,2,2,3,3]; var s=new Set(arr); console.log(...s);
4.两个数组合并去重,使用filter()方法加indexOf()方法索引
filter()方法 检测数值元素,并返回符合条件全部元素的数组。it
indexOf() 方法可返回数组中某个指定的元素位置。io
该方法将从头至尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。若是找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。console
若是在数组中没找到指定元素则返回 -1。for循环
function distinct(a,b){ let arr=a.concat(b); return arr.filter((item,index)=>{ return arr.indexOf(item)===index }) } var arr=[1,2,3,4,5]; var arr2=[1,12,13,14,15]; console.log(distinct(arr,arr2));
5.找出数组中重复的值
function duplicates(arr) { //声明两个数组,a数组用来存放结果,b数组用来存放arr中每一个元素的个数 var a = [], b = []; //遍历arr,若是以arr中元素为下标的的b元素已存在,则该b元素加1,不然设置为1 for (var i = 0; i < arr.length; i++) { if (!b[arr[i]]) { b[arr[i]] = 1; continue; } b[arr[i]]++; } //遍历b数组,将其中元素值大于1的元素下标存入a数组中 for (var i = 0; i < b.length; i++) { if (b[i] > 1) { a.push(i); } } return a; } console.log(duplicates([1,2,4,4,3,3,1,5,3]));