zoukankan      html  css  js  c++  java
  • js实现数组去重

    数组去重即去掉数组中重复的元素,是web前端工作者在面试过程中和工作中经常会遇到的一个问题,相信一般的方法大家都会,只不过会存在效率差异问题,下面我就来说说我们常用的几种数组去重的方法!

    方法1,思路:通过双重循环,每次检测新数组里面是否有该元素,没有就加进去,改方法思路简单,但当数组长度较长时,会非常影响性能!(不推荐使用)
    function deleteRepeat1(arr) {
            var newArr = [];
            for (var i = 0; i < arr.length; i++) {
                let has = false;
                for (let j = 0; j < newArr.length; j++) {
                    if (arr[i] === newArr[j]) {
                        has = true;
                    }
                }
                if (!has) {
                    newArr.push(arr[i]);
                }
            }
            return newArr;
        }

    方法2,思路:先将数组元素进行排序,然后进行循环,将每一项与新数组的最后一项进行比较,如果不相等就添加进去,因为是经过排序的,所以只用和最后一项进行比较(因为这个结果会导致数组的顺序改变,所以也不推荐使用);

    function deleteRepeat2(arr) {
            let arr2 = arr.sort(function (a, b) {
                return a - b;
            });
            let newArr = [arr2[0]];
            for (var i = 0; i < arr2.length; i++) {
                if (arr2[i] !== newArr[newArr.length - 1]) {
                    newArr.push(arr2[i])
                }
            }
            return newArr
        }
    

    方法3,思路:利用对象的特性来判断新数组中是否已经有该值(推荐使用)

    function deleteRepeat3(arr) {
            let obj = {}, newArr = [];
            for (let i = 0; i < arr.length; i++) {
                if (!obj[arr[i]]) {
                    newArr.push(arr[i]);
                    obj[arr[i]] = 1;
                }
            }
            return newArr;
        }

    方法4,思路:循环遍历每一项,然后判断每一项的值在数组中的位置是否为当前循环的index,如果不是,则代表不是第一次出现(推荐使用);

     function deleteRepeat4(arr) {
            let newArr = [];
            for (let i = 0; i < arr.length; i++) {
                if (i == arr.indexOf(arr[i])) {
                    newArr.push(arr[i])
                }
            }
            return newArr;
        }
    

    以上就是我总结的四种数组去重的方法,用户可以根据实际业务需求进行选择使用!

  • 相关阅读:
    大数据平台Hadoop集群搭建
    分布式文件系统之FastDFS安装部署
    Nginx反代MogileFS集群
    分布式文件系统之MogileFS的安装使用
    高可用服务之Keepalived利用脚本实现服务的可用性检测
    高可用服务之Keepalived高可用LVS集群
    高可用服务之Keepalived邮件通知配置
    高可用服务之Keepalived基础入门
    高可用集群corosync+pacemaker之pcs安装使用
    高可用集群corosync+pacemaker之crmsh使用(二)
  • 原文地址:https://www.cnblogs.com/qilj/p/6892829.html
Copyright © 2011-2022 走看看