1. 程式人生 > 實用技巧 >filter()陣列去重的方法

filter()陣列去重的方法

第一種: 利用Map物件和陣列的filter方法
    var arr1 = [1, 2, 3, 1, 2, 4, NaN, undefined, NaN, undefined]
    function unique(arr) {
      const res = new Map()
      return arr.filter((a) => !res.has(a) && res.set(a))
    }
    var newArr = unique(arr1)
    console.log(newArr);
結果: 1.Map物件是ES6提供的一個新的資料結構,其中has的辦法是返回一個布林值,表示某個值是否存在當前的Mp物件之中,set的辦法是給Map物件設定key/value。

2.filter() 方法建立一個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。
所以說,Map物件結合filter方法可以達到陣列去重的效果~ filter() array.filter(function(currentValue,index,arr),thisValue) 返回陣列,包含了符合條件的所有元素。如果沒有符合條件的元素則返回空陣列。 引數:   currentValue必須。當前元素的值   index可選。當前元素的索引值   arr可選。當前元素屬於的陣列物件 thisValue可選。物件作為該執行回撥時使用,傳遞給函式,用作"this"的值。 如果省略了thisValue,"this"的值為"undefined"
filter()方法建立一個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。 注意:filter()不會對空陣列進行檢測。 注意:filter()不會改變原始陣列。 案例: done是 true 的
var array1 = [
      { "id": 0, "info": "dsfffffffffffhd", "done": false },
      { "id": 1, "info": "dsfffffffffffhd", "done": true },
      { "id": 22, "info": "dsfffffffffffhd", "done": false
}, { "id": 3, "info": "dsfffffffffffhd", "done": true }, { "id": 42, "info": "dsfffffffffffhd", "done": false }, { "id": 53, "info": "dsfffffffffffhd", "done": false }, { "id": 6, "info": "dsfffffffffffhd", "done": true } ] var ar = array1.filter(function(value, index, arr) { return value.done === true }) console.log(ar);
結果:
陣列去重的方法