美文网首页
如何实现数组去重

如何实现数组去重

作者: 罗斯福 | 来源:发表于2019-12-14 17:45 被阅读0次

    方法一:利用ES6set去重

    function unique (arr){
    return Array.from(new set(arr))
    }
    var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}]
    console.log(unique(arr))
     //[1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, "a", {}, {}]
    

    注意:NaN和undefined都可以被存储在Set 中, NaN之间被视为相同的值(尽管 NaN !== NaN)

    方法二:利用indexOf方法

    function unique(arr){
    if(!Array.isArray(arr)){   
      console.log('type error')
      return
       }
      
    var array=[]
    for(let i=0;i<arr.length;i++){
    if(array.indexOf(arr[i])===-1){
    array.push(arr[i])
         }
      }
    return array
    }
    var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
    console.log(unique(arr))//同样NAN和{}无法去重
    

    方法三:先排序,后判断相邻值是否相等

    function unique(arr){
    if(!Array.isArray(arr)){   
      console.log('type error')
      return
       }
      
    var arr=arr.sort()
    var array=[arr[0]]
    for(let i=1;i<arr.length;i++){
    if(arr[i]!==arr[i-1]){
    array.push(arr[i])
         }
      }
    return array
    }
    var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
    console.log(unique(arr))
    

    方法四:利用for嵌套for,然后splice去重(es5 中最常见)

    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
    }
    var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
        console.log(unique(arr))
    

    相关文章

      网友评论

          本文标题:如何实现数组去重

          本文链接:https://www.haomeiwen.com/subject/nincnctx.html