javascript中數組去重的經常使用方法

方法一(使用es6新增的set構造函數)

function DeWeight(arr){
    return [...new Set(arr)]
}
console.log(DeWeight([1,2,"2",3,5,3,2]))
複製代碼

方法二: (使用indexOf方法)

function DeWeight(arr){
  /**
   * 第一步:初始化一個新數組
   * 第二步:遍歷傳進來的數組,拿數組中的每個元素經過indexOf函數裏面查找,
   *        若是沒查出來,就把當前元素丟到新數組中,不然已經有了,管它弄啥
  */
  let newArr = []
  for(let i=0;i<arr.length;i++){
    if(newArr.indexOf(arr[i]) == -1){
      newArr.push(arr[i])
    }
  }
  return newArr
}
console.log(DeWeight([1,2,"2",3,5,3,2]))
複製代碼

方法三:(雙循環)

function DeWeight(arr){
  /**
   * 第一步: 初始化一個數組
   * 第二步:使用雙層循環,拿外層循環中的一個元素跟後面的全部元素進行比較,
   *        若是都不相等,就把它push到新數組中,不然外層下表+1,繼續比較
   * 
   * 注:實現原理是每一個元素都跟後面的元素比較,取相同元素的最後一個元素
   */
  let newArr = []
  for(let i=0;i<arr.length;i++){
    for(let j=i+1;j<arr.length;j++){
      if(arr[i] === arr[j]){
        i++
      }
    }
    newArr.push(arr[i])
  }
  return newArr

}
console.log(DeWeight([1,2,"2",2,3,5,3]))
複製代碼

方法四:(es6數組中的filter方法)

function DeWeight(arr){
  /**
   * 第一步:初始化一個map對象
   * 第二步:經過數組的filter方法過濾全部元素,利用map的has方法判斷傳進來的每個元素,
   *        若是此元素沒有在map裏面,就+到map裏面去返回true,不然false
   * 
   * 注:數組的filter() map的has() set()
   */
    var map=new Map();
    let newArr = arr.filter(function(item){
      if(!map.has(item)){
        map.set(item)
        return true
      }else{
        return false
      }
    })
    return newArr
}
console.log(DeWeight([1,2,"2",2,3,5,3]))
複製代碼

方法五:(es6數組中的includes方法)

function DeWeight(arr){
   /**
   * 第一步:初始化一個新數組
   * 第二步:遍歷傳進來的數組,經過使用數組的includes方法判斷每個元素是否在新數組中,
   *        若是沒有,就把此元素丟到新數組中,不然下一個
   */
  let newArr = []
  for(let i=0;i<arr.length;i++){
    if(!newArr.includes(arr[i])){
      newArr.push(arr[i])
    }
  }
  return newArr
}
console.log(DeWeight([1,2,"2",3,5,3,2]))
複製代碼
相關文章
相關標籤/搜索