zoukankan      html  css  js  c++  java
  • 数组去重的几种方法

    数组去重的方法

    方法一   利用set对象

    function unique(arr){
        let arr1=Array.from(new Set(arr))
        return arr1;
    }
    let arr=[1,2,3,1,2,2,'a','b','c','c','a',4 ,4,false,false, undefined,undefined, null,null, NaN, NaN,]
    console.log(unique(arr))  // [1, 2, 3, "a", "b", "c", 4, false, undefined, null, NaN]

        想要更加了解set对象,请阅读 https://www.cnblogs.com/Jeanchjy/p/13086950.html

    方法二  利用includes去重,includes方法是检查数组是否有某个值存在

    function unique(arr){
            let arr2=[]
            for(let i=0;i<arr.length;i++){
                if(!arr2.includes(arr[i])){
                    arr2.push(arr[i])
                }
            }
             return arr2;
         }
         let arr=[1,2,3,1,2,2,'a','b','c','c','a',4 ,4,false,false, undefined,undefined, null,null, NaN, NaN,]
         console.log(unique(arr))  // [1, 2, 3, "a", "b", "c", 4, false, undefined, null, NaN]

    方法三  利用indexOf与lastIndexOf查询,在利用splice去重

       function unique(arr){
            for(let i=0;i<arr.length;i++){
                let first=arr.indexOf(arr[i]) //从左往右查询
                let last=arr.lastIndexOf(arr[i]) //从右往左查询
                if(first!==last){
                    arr.splice(last,1)
                }
             }
             return arr
        }
        let arr=[1,2,3,1,2,2,'a','b','c','c','a',4 ,4,false,false, undefined,undefined, null,null, NaN, NaN,]
        console.log(unique(arr))  //[1, 2, 3, "a", "b", "c", 4, false, undefined, null, NaN]

    方法四  利用indexOf

    function unique(arr){
            let arr3=[]
            for(let i=0;i<arr.length;i++){
                if(arr3.indexOf(arr[i])===-1){
                    arr3.push(arr[i])
                }
            }
            return arr3
        }
        
        let arr=[1,2,3,1,2,2,'a','b','c','c','a',4 ,4,false,false, undefined,undefined, null,null, NaN, NaN,]
        console.log(arr.indexOf(NaN)) //-1  
        console.log(unique(arr)) // [1, 2, 3, "a", "b", "c", 4, false, undefined, null, NaN, NaN]

           NaN没法去重,由于arr.indexOf(NaN)的索引值为-1,题目中表示不存在的意思。我们是新数组arr3是利用indexOf为-1去判断值存不存在,不存在就插入arr3数组

    方法五  利用filter

        let arr=[1,2,3,1,2,2,'a','b','c','c','a',4 ,4,false,false, undefined,undefined, null,null, NaN, NaN,]
        let arr5=arr.filter((item,index,array)=>{
            return array.indexOf(item)===index
        })
        //  会把所有的NaN去掉, 因为查询NaN的索引为-1
        console.log(arr5) //[1, 2, 3, "a", "b", "c", 4, false, undefined, null]

    方法六  利用for嵌套循环,在用splice去重

       function unique(arr){
            for(let i=0;i<arr.length;i++){
                for(let j=i+1;j<arr.length;j++){
                    if(arr[i]===arr[j]){
                        arr.splice(j,1);
                        j--;
                    }
                }
            }
            return arr
        }    
        console.log(NaN===NaN) //false
        let arr=[1,2,3,1,2,2,'a','b','c','c','a',4 ,4,false,false, undefined,undefined, null,null, NaN, NaN,]
        console.log(unique(arr)) //[1, 2, 3, "a", "b", "c", 4, false, undefined, null, NaN, NaN]
        </script> 
  • 相关阅读:
    设计模式之实现状态模式
    一定要记住的OO设计原则:
    设计模式之实现命令模式
    设计模式之实现迭代器模式
    设计模式之实现观察者模式
    设计模式之实现策略模式
    设计模式之实现组合模式
    设计模式之实现几种工厂模式
    设计模式之实现装饰者模式
    pygame学习笔记(3)——时间、事件、文字
  • 原文地址:https://www.cnblogs.com/Jeanchjy/p/13122215.html
Copyright © 2011-2022 走看看