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))
  • 相关阅读:
    读 《异类》- 作者:[加拿大] 马尔科姆·格拉德威尔 有感
    docker常用操作命令
    MySQL 使用规范
    js 字符串转json对象
    Mybatis 工作原理
    JDBC连接配置
    Java 线程基础
    数组与链表
    Java 内部类
    MySQL 去重
  • 原文地址:https://www.cnblogs.com/tutao1995/p/11237047.html
Copyright © 2011-2022 走看看