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;
    }        
  • 相关阅读:
    Audacious 1.3.0
    medit-多平台的 GTK 文本编辑器
    PIDA:基于 Gtk 的 Python IDE
    Xfce 4.4.0 for Ubuntu Edgy Eft
    Lemonrip-DVD 提取对象
    Tomboy 0.5.5
    网管经验谈:成功网管必备素质硬件篇
    再学 GDI+[35]: TGPPen 虚线画笔位移 SetDashOffset
    再学 GDI+[33]: TGPPen 画笔的几何变换 SetTransform
    再学 GDI+[37]: TGPPen TGPCustomLineCap、SetCustomStartCap、SetCustomEndCap
  • 原文地址:https://www.cnblogs.com/linxing/p/10476637.html
Copyright © 2011-2022 走看看