js数组去重

一,使用嵌套循环,改变原数组

    var arr = [1,5,1,1,5,6,7,9]
    for(var i=0;i<arr.length-1;i++){
      for(var j=i+1;j<arr.length;j++){
          if(arr[j]==arr[i]){
            arr.splice(j,1)
            j--;
          }
      }
    }
    console.log(arr)

二,创建新数组,判断新数组中是否存在该值indexOf

    var arr = [5,2,5,2,2,0]
    var arrNew = []
    for(var i=0;i<arr.length;i++){
      if(arrNew.indexOf(arr[i])<0){
        arrNew.push(arr[i])
      }
    }
    console.log(arrNew)

三,创建新数组,利用对象记录判断新数组中是否存在该值(改动此方法后也可获得数组中每个元素出现的次数)

    var arr = [5,2,5,2,2,0]
    var arrOb = {},arrNew=[]
    for(var i=0;i<arr.length;i++){
      var el = arr[i]
      if(!arrOb[el]){
        arrOb[el] = true
        arrNew.push(el)
      }
    }
    console.log(arrNew)

四,比较数组元素的下标和第一次出现的位置

    var arr = [5,2,5,2,2,0]
    for(var i=0;i<arr.length;i++){
       if(arr.indexOf(arr[i])!=i){
         arr.splice(i,1)
         i--
       }
    }
    console.log(arr)

 

五,利用filter

    var arr = [5,2,5,2,2,0]
    var as=arr.filter((item,index,ar)=>{
      if(ar.indexOf(item) == index){
          return ar
      }

    })
    console.log(as)

六,ES6 new Set()自动去重,返回类数组,然后使用Array.from转化成数组

var arr = [5,2,5,2,2,0]
    var arrN = new Set(arr)
    console.log(Array.from(arrN))

 

posted @ 2018-10-30 16:44  破晓儿  阅读(171)  评论(0编辑  收藏  举报