• js之数组去重的方法


    数组去重?即去除数组中重复的元素...

    首先第一种方法就是利用set集合的特性实现去重(其实set用法很多,有兴趣的可以多去了解下);

      那什么是set集合呢?set集合是一种新的数据存储格式;

      set语法:new Set()

        参数:一个数组

    set集合可以称为史上最快的一种去重方式,如下:

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

    第二种方法则是先封装好一个函数判断数组中是否存在某个值,然后再利用这个原理进行数组去重;代码如下:

    //判断数组中是否存在某个值
    function has(arr, n){
        var bStop = false;
        for(var i in arr){
            if(arr[i] == n){
                bStop = true;
                break;
            }
        }
        return bStop;
    }
    function norepeat2(arr){
        var newArr = [];
        for(var i in arr){
            if(!has(newArr, arr[i])){
                newArr.push(srr[i])
            }
        }
        return newArr;
    }

    第三种方法呢,则是利用es5中新增的方法indexOf去重;

      indexOf()作用:判断某个字符是否存在。如果存在,则返回相对应的下标,不存在则返回-1;

      究竟怎么实现呢,相信小可爱们都已经想到了~代码如下:

    function norepeat3(arr){
        //创建好一个新的数组
        var newArr = [];
        //循环遍历arr
        for(var i in arr){
            //判断新数组,如果不存在arr的第i个,不存在则添加到新数组当中
            if(newArr.indexOf(arr[i]) == -1){
                newArr.push(arr[i])
            }
        }
        return newArr
    }

    第四种方法则利用sort排序,创建一个新的数组然后传入原数组的第0个;循环遍历的时候要注意i的初始值从1开始。代码如下:

    Array.prototype.norepeart4 = function(){
        //先排序
        this.sort();
        //创建一个新的数组并存入数组的第0个
        var newArr = [this[0]];
        //循环遍历传入的数组
        for(var i = 1;i<this.length;i++){
            //利用每个新数组中值与传入数组的第i个进行计较,不存在则push到新数组中
            if(newArr[newArr.length-1] != this[i]){
                newArr.push(this[i])
            }
        }
        //返回新的数组
        return newArr;
    }

    只有想不到没有写不出!数组去重的方法很多很多,在这里就简单的列举四种。望大家喜欢(嘻嘻)

  • 相关阅读:
    Httpd服务入门知识-Httpd服务常见配置案例之显示服务器版本信息
    破解CentOS7的root及加密grub修复实战
    Httpd服务入门知识-Httpd服务安装
    Httpd服务入门知识-http协议版本,工作机制及http服务器应用扫盲篇
    Linux操作系统-CentOS7启动流程和服务管理
    Socket网络编程-IO各种概念及多路复用
    Socket网络编程-SocketServer
    Socket网络编程-UDP编程
    Socket网络编程-TCP编程
    Linux操作系统内核编译之NTFS文件系统模块支持案例
  • 原文地址:https://www.cnblogs.com/wantu/p/9059656.html
Copyright © 2020-2023  润新知