• JavaScript中的数据的去重



    一、indexOf()

    原理:将原始数组中的数据,写入到新的数组中,如果新数组中,没有这个数据,我们再进行写入操作,indexOf() 结果是 -1

     1     var arr = [1,2,2,3,5,3,1,5,4,3,4,5,6];
     2     //定义一个新数组
     3     var arr2 = setNewArr(arr);
     4     console.log(arr2);
     5     //执行去除重复数据的数组
     6     function setNewArr(arr){
     7         //定义一个新数组
     8         var newArr = [];
     9         //执行循环
    10         arr.forEach(function(v){
    11             //执行判断字符出现位置
    12             if(newArr.indexOf(v) == -1){
    13                 //如果newArr中没有该数据,就写入数据到newArr中
    14                 newArr.push(v);
    15             }
    16         })
    17         return newArr;
    18     }

    注:forEach不能用于对象

    二、双重for循环

     1 var arr123 = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
     2     //封装一个循环判断函数
     3     function setNewArr2(arr){
     4         //外层循环,从第一个开始,循环至最后
     5         for(var i = 0; i <= arr.length-1;i++){
     6             //内层循环,从循环次数的第二个开始,循环至最后
     7             for(var j = i+1 ; j <= arr.length-1 ; j++){
     8                 //判断第一个和第二个是不是全等,如果是,则将第二个删除,同时j向前移动一位
     9                 if(arr[i] === arr[j]){
    10                     arr.splice(j,1);
    11                     j--;
    12                 }
    13             }
    14         }
    15         return arr;
    16     }
    17     //引用变量执行函数
    18     var newArr = setNewArr2(arr123);
    19     console.log(newArr);

    注:

    循环操作数组,只要执行了删除数组单元的操作

    一定要将循环变量数值执行 -- (自身减减)操作

    三、先排序,后去重
    概念:先将数组中的数值,排列顺序,后比较删重复值

     1             var arr = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
     2         //定义一个新数组
     3         var newArr =setNewArr3(arr);
     4         console.log(newArr);
     5         //封装一个函数
     6         function setNewArr3(arr){
     7             //先对数组进行排序操作,相同数据,相邻
     8             var newArr = arr.sort(function(a,b){return a-b});
     9             console.log(newArr);
    10             //相邻数组进行比对
    11             for(var i = 0;i <= arr.length - 1;i++){
    12                 //如果相邻数组相同,则删除后面的数据,同时与下一个补位数据进行对比
    13                 if(newArr[i] === newArr[i+1]){
    14                     newArr.splice(i+1, 1)
    15                     i--;
    16                 }
    17             }
    18             return newArr;
    19         }

    注:

    先将数组中的数值,按照大小顺序,排列
    排序之后,相同的数值,一定是相邻的
    此时,只要相邻的两个数值比较,如果相同,删除后一个数据,再执行 i--
    使用一层循环就可以了
    循环次数就比较少

    A True Master Is An Eternal Student(真正的大师总是怀着一颗学徒的心) ------(Master Yi)
  • 相关阅读:
    12、多线程:Threading、守护线程
    11.1、socket连接中的粘包、精确传输问题
    python网络编程:socket、服务端、客户端
    python正则表达式模块re:正则表达式常用字符、常用可选标志位、group与groups、match、search、sub、split,findall、compile、特殊字符转义
    9.4、__del__、__doc__、__dict__、__module__、__getitem__、__setitem__、__delitem__、__str__、__repr__、__call__
    python:异常处理、自定义异常、断言
    9.3、反射
    9.1.1、私有变量,私有方法
    关掉百度商桥请您留言和在线咨询
    飞飞影视cms标签
  • 原文地址:https://www.cnblogs.com/karl-kidd/p/12555990.html
Copyright © 2020-2023  润新知