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

    1 双重for循环

    function distinct(value) {
            let arr = value;
            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
        }
        var arrlist = [1, 3, 5, 3, 5, 6, 7]
        var dealArr = distinct(arrlist)
        console.log(dealArr)  // 此性能最差   

    2  Array.filter() + indexOf

     function distinct(value) {
          let arr = value;
          return arr.filter((item, index)=> {
            return arr.indexOf(item) === index
          })
        }
        var arrlist = ['ab', 'cd', 'ab', 6, 5, 6, 7]
        var dealArr = distinct(arrlist)
        console.log(dealArr)  // 此性能较差 

    3 ES6 Set

    var arr = [1, 2, 4, 4, 6, 6, 8]
        let tempArr = new Set(arr)
        let dealArr = Array.from(tempArr)
        console.log(dealArr) // 性能优

    4 Array.sort()

     function distinct(value) {
            let arr = value
            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
        }
        var arrlist = ['ab', 'cd', 'ab', 6, 5, 6, 7]
        var dealArr = distinct(arrlist)
        console.log(dealArr)  // 此性能比较优秀 

    5 for...of + Object

    function distinct(value) {  // 利用对象的属性不会重复这一特性,校验数组元素是否重复
            let arr = value
            let result = []
            let obj = {}
    
            for (let i of arr) {
                if (!obj[i]) {
                    result.push(i)
                    obj[i] = 1
                }
            }
    
            return result
        }
        var arrlist = ['ab', 'cd', 'ab', 6, 5, 6, 7]
        var dealArr = distinct(arrlist)
        console.log(dealArr)  // 此性能最优 
  • 相关阅读:
    对单片机存储分配新的认识
    超简单的word转swf 实现
    纯真IP数据库
    webservice 特殊字符处理
    QQ输入法导致win8 x64 装不上vs11,打不开记事本,等各种变态问题
    时间戳转换
    Remote Desktop Organizer 1.4.5
    Xcdoe 4.6 dbank下载
    链接复用
    Visual Studio 2012 序列号
  • 原文地址:https://www.cnblogs.com/Tiboo/p/11846316.html
Copyright © 2011-2022 走看看