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

如何实现数组去重

作者: 罗斯福 | 来源:发表于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