zoukankan      html  css  js  c++  java
  • 数组去重方法大全

    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中的set对象

    Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

    Set 中的特殊值

    Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:

    • +0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;
    • undefined 与 undefined 是恒等的,所以不重复;
    • NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复。
    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]));
  • 相关阅读:
    python 大小写转换函数
    linux 自学系列:GRUB引导程序
    linux 自学系列:退出linux命令
    dict 常用方法
    ln命令简单用法
    利用easy_install 工作效率提升起来
    linux 自学系列:touch 命令
    linux 改文件夹命令
    开机自动重启脚本
    multiprocessing 用法
  • 原文地址:https://www.cnblogs.com/linxim/p/11729402.html
Copyright © 2011-2022 走看看