zoukankan      html  css  js  c++  java
  • 常见的几种数组去重的方法,总有一种适合你~

    又到了一年一度的换工作的旺季,今天在这里整理了几种常见的数组去重的方法,希望能对求职或者工作中的你提供一点帮助~~

    方法1:是代码量看起来最少最简洁的方法了,利用ES6的set方法来实现的。

    function unique1(arr) {
        return Array.from(new Set(arr))
    }

    方法2: 双层for循环,利用slice方法截取重复的部分。

    function unique2(arr) {
        for(var i=0; i<arr.length;i++) {
        for( var j=i+1; j<arr.length;j++) {
            if(arr[i] == arr[j]) {
            arr.splice(j, 1);
            j--;
                }
            }
        }
        return arr;
    }            

    方法3:利用indexOf去重

    function unique3(arr) {
        if( !Array.isArray(arr)) {
            return 'type error';
        }
        var newArr = [];
        for(var i =0; i<arr.length; i++) {
            if(newArr.indexOf(arr[i]) === -1) {
    	    newArr.push(arr[i])
    	}
        }
        return newArr;
    }    

    方法4: 先利用sort方法,对每个元素按照字符编码顺序进行排序,再比对前后是否重复

    function unique4(arr) {
        if(!Array.isArray(arr)) {
            return 'type error';        
        }
        arr = arr.sort();
        let newArr = [arr[0]];
        for( var i = 1; i<arr.length;i++) {
            if( arr[i] !== arr[i-1]) {
                 newArr.push(arr[i]);
            }
        }
        return newArr;
    }        

    方法5: 利用对象属性不能重复的特点巧妙对数组进行去重

    function unique5(arr) {
        if(!Array.isArray(arr)) {
            return 'type error';
        }
        let temp = {},
            newArr = [],
            len = arr.length;
        for( let i = 0;i< len; i++) {
            if(!temp[arr[i]]) {
                temp[arr[i]] = 'aa';
                newArr.push(arr[i]);
            }
        }
        return newArr;
    }                

    方法6: 最后一种利用reduce方法逼格满满啊~~不熟悉此方法的小伙伴可以先了解下reduce的API。

    function unique6(arr) {
        if(!Array.isArray(arr)) {
            return 'type error';
        }
        let newArr = arr.reduce((pre, cur) => {
            if(!pre.includes(cur)) {
                return pre.concat(cur)
            } else {
                return pre
            }
        }, [])
        return newArr;
    }        
  • 相关阅读:
    Leetcode-Daily: Jewels and Stones
    Spark专题(二):Hadoop Shuffle VS Spark Shuffle
    Spark专题(一):Spark工作原理图
    我司建立图书借阅的一点思考
    机器学习的分类方法——逻辑回归
    机器学习的分类算法——集成学习
    浅谈对离散型随机变量期望的理解
    sklearn学习:make_multilabel_classification——多标签数据集方法
    外星人在阴间修仙
    RabbitMQ
  • 原文地址:https://www.cnblogs.com/linxing/p/10476637.html
Copyright © 2011-2022 走看看