• 常见的几种数组去重的方法,总有一种适合你~


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

    方法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;
    }        
  • 相关阅读:
    HTML DOM-->内部样式表与外部样式表的读写
    HTML DOM-->行间样式表的读写
    HTML DOM-->获取文本节点
    HTML DOM-->获取属性节点
    HTML DOM-->获取标签(元素)节点
    HTML DOM-->简介
    JS 浏览器BOM-->setTimeout() 方法
    JS 浏览器BOM-->clearInterval() 方法
    JS 浏览器BOM-->setInterval() 方法
    JS 浏览器BOM-->onresize方法
  • 原文地址:https://www.cnblogs.com/linxing/p/10476637.html
Copyright © 2020-2023  润新知