• 数组去重的几种方法


    数组去重的方法

    方法一   利用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> 
  • 相关阅读:
    对象直接量
    js学习类
    jquery.js与sea.js综合使用
    拥抱模块化的JavaScript
    匿名函数与闭包
    js对象如何合并?
    Web.config配置文件详解
    javascipt自定义命名空间、静态类、实例对象
    jQuery源码的基础知识
    企业架构/企业开发 [Enterprise architecture / Enterprise Development]
  • 原文地址:https://www.cnblogs.com/Jeanchjy/p/13122215.html
Copyright © 2020-2023  润新知