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

    /*
            * 最基本的去重方法
            * 思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。
            */
            function unique(arr) {
                var resArr = [arr[0]];
                for (var i = 1; i < arr.length; i++) {
                    var repeat = false;
                    for (var j = 0; j < resArr.length; j++) {
                        if (arr[i] == resArr[j]) { 
                            repeat = true;
                            break;
                        }
                    }
                    !repeat && resArr.push(arr[i]);
                }
                return resArr;
            }
    /*
            * 利用对象的属性去重(推荐)
            * 思路:每次取出原数组的元素,然后在对象中访问这个属性,如果存在就说明重复
            */
            function unique(arr) {
                var resArr = [];
                var json = {};
                for (var i = 0; i < arr.length; i++) {
                    if (!json[arr[i]]) {
                        resArr.push(arr[i]);
                        json[arr[i]] = 1;
                    }
                }
                console.log(json);
                return resArr;
            }
    /*
            * 利用下标查询
            * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中
            * IE8及其以下版本不支持数组的indexOf方法
            */
            function unique(array) {
                var temp = [];
                for (var i = 0; i < array.length; i++) {
                    ( temp.indexOf(array[i]) == -1 ) && temp.push(array[i]);
                }
                return temp;
            }
    /*
            * 排序后相邻去除法
            * 给传入数组排序,排序后相同值相邻,
            * 然后遍历时,新数组只加入不与前一值重复的值。
            * 会打乱原来数组的顺序
            */
            function unique(array) {
                array.sort();    //数组在原数组上进行排序,不生成副本
                var temp = [ array[0] ];
                for (var i = 0; i < array.length; i++) {
                    ( array[i] !== temp[temp.length - 1] ) && temp.push(array[i]);
                }
                return temp;
            }
    /*
            * 实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,
            * 那么表示第i项是重复的,忽略掉。否则存入结果数组。
            * array.indexOf(item,start)方法可返回数组中某个指定的元素位置
            */
            function unique(array) {
                var temp = [];
                for (var i = 0; i < array.length; i++) {
                    ( array.indexOf(array[i]) == i ) && temp.push(array[i]);
                }
                return temp;
            }
    // ES6
            let arr = [1,2,1,4,2,6,1,5];
            let s = new Set(arr);
            let res = [...new Set(arr)];
  • 相关阅读:
    软件工程第三次作业
    软件工程第二次作业
    Java基础篇
    2018软件工程第一次作业
    网络基础知识(http请求)
    linux命令
    添加电子称程序
    多线程Demo
    关闭一个winform窗体刷新另外一个
    通过WebApi取出XML数据
  • 原文地址:https://www.cnblogs.com/jianglibaizhi/p/10573045.html
Copyright © 2011-2022 走看看