数组去重方法大全

巧了我就是萌 提交于 2019-12-02 03:39:47

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循环加includes

 

     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

 

var arr=[1,1,2,2,3,3];
        var s=new Set(arr);
        console.log(s);

4.两个数组合并去重,使用filter()方法加indexOf()方法

 

filter()方法  检测数值元素,并返回符合条件所有元素的数组。

indexOf() 方法可返回数组中某个指定的元素位置。

该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。

如果在数组中没找到指定元素则返回 -1。

 

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]));

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!