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;
    }        
  • 相关阅读:
    Linux ansible 常用模块二
    Linux之ansible 常用模块
    flask websocket实现用例
    flask--上下文原理
    python Django
    python 并发编程 锁 / 信号量 / 事件 / 队列(进程间通信(IPC)) /生产者消费者模式
    并发编程 process 模块的方法及运用 僵尸与孤儿
    python 并发编程 操作系统 进程 并发.并行 及 同步/异步,阻塞/非阻塞
    python 网络编程粘包解决方案2 + ftp上传 + socketserver
    第一节 机器学习基础
  • 原文地址:https://www.cnblogs.com/linxing/p/10476637.html
Copyright © 2011-2022 走看看