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

    var a = [3, 62, null, 0, 38, undefined, NaN,NaN, ' ', 38, " "];


    //1.set+array 不能区别nan '' ""
    // 优点:代码简洁,速度快 时间复杂度O(N)
    //缺点:需要一个额外的set和array的存储空间,空间复杂度 O(N)
    function uniqueArray(arr){
    // return Array.from(new Set(arr))
    return [...new Set(arr)]
    }
    console.log(uniqueArray(a))


    //2.splice 不能区别 null undefined '' ""
    // 优点:不需要使用额外的存储空间,空间复杂度为O(1)
    // 缺点:需要频繁的内存移动,双重循环,时间复杂度为O(N2)
    function spliceUnique(arr){
    for(let i=0;i<arr.length;i++){
    for(let j=i+1;j<arr.length;j++){
    if(arr[j] == arr[i]){
    arr.splice(j,1);
    j--
    }
    }
    }
    return arr;
    }
    console.log(spliceUnique(a))


    // 3.array indexof 能区别 null undefined '' ""
    // 时间复杂度为O(N2),空间复杂度为O(N)
    function arrayUnique(arr){
    let tempArr = [];
    for(let i=0;i<arr.length;i++){
    if(tempArr.indexOf(arr[i]) < 0){
    tempArr.push(arr[i])
    }
    }
    return arr;
    }

    console.log(arrayUnique(a))



    // 4.array+object 能区别 null undefined '' "" nan

    function objectUnique(arr){
    let obj = {},array = [];
    for(let i=0;i<arr.length;i++){
    if(!obj[arr[i]]){
    obj[arr[i]] = true;
    array.push(arr[i])
    }
    }
    return array;
    }

    console.log(objectUnique(a))
  • 相关阅读:
    从员工到总监,你要明白的8个道理!
    IT民工2013的升迁
    你会对老板说这十句傻话吗
    BIO
    同步工具类
    NIO(一)
    Lock与Condition
    forkJoin
    线程池与Future
    今天需要获取一个网站的web服务反馈回来的数据,找到份不错的帖子关于WebClient类的使用,记录下来·
  • 原文地址:https://www.cnblogs.com/tutao1995/p/11237047.html
Copyright © 2011-2022 走看看