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

    1、普通的for循环,或用include   (效率比较低)

    var arr1=[1,5,2,3,4,1,5,3,4]
    var arr2 = [];
    for (var i = 0; i < arr1.length; i++) {
            if (arr2.indexOf(arr1[ i ])==-1) {
                arr2.push(arr1[ i ])
            }
    }

    或用includes

    function distinct(arr) {
        let result = []
        for (let item of arr) {
            !result.includes(item) && result.push(item)
        }
        return result
    }

    2、Array.filter() + indexOf 通过判断下标(效率比较低)

    function distinct(arr) {return arr.filter((item, index)=> {
            return arr.indexOf(item) === index
        })
    }

    3、双重 for 循环 (效率也比较低)

    function distinct(arr) {
        for (let i=0, len=arr.length; i<len; i++) {
            for (let j=i+1; j<len; j++) {
                if (arr[i] == arr[j]) {
                    arr.splice(j, 1);
                    // splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一
                    len--;
                    j--;
                }
            }
        }
        return arr
    }

    4、Array.sort()  效率稍高些

    function distinct(arr) {
        arr = arr.sort()
        let result = [arr[0]]
    
        for (let i=1, len=arr.length; i<len; i++) {
            arr[i] !== arr[i-1] && result.push(arr[i])
        }
        return result
    }

    5、ES6中的 new Set()  效率比较高

    function distinct(arr) {
        return Array.from(new Set(arr))
    }
    var arr=[1, 2, 3, 3, 3, '0', '1', '2',1];  
    arr=[...new Set(arr)];  

    6、for...of + Object 利用对象的属性不会重复这一特性,校验数组元素是否重复   效率最高

    function distinct(arr) {
        let result = []
        let obj = {}
    
        for (let item of arr) {
            if (!obj[item]) {
                result.push(item)
                obj[item] = 1
            }
        }
        return result
    }
  • 相关阅读:
    C# 设置 Excel 条件格式 与 冻结窗口
    Exce折叠效果(数据组合)
    [一点一滴学英语]20050829
    Tencent Messenger
    很有趣的一篇文章:不使用Linux的五大理由
    Tencent Messenger (continued)
    N久没有听过这么搞笑的RAP了
    [一点一滴学英语]20050827
    [Eclipse笔记]SWT真正的优势不是快这么简单
    [一点一滴学英语]20050828
  • 原文地址:https://www.cnblogs.com/gopark/p/11398754.html
Copyright © 2011-2022 走看看