1. 程式人生 > 其它 >陣列去重方法:filter,reduce

陣列去重方法:filter,reduce

技術標籤:javascript

filter、reduce實現陣列去重。

filter實現陣列去重程式碼

/**
 * filter
 */

let ar = [1, 2, 2, 3, 4, 4, 5]

let unique_ar = ar.filter((x, index) => {
    // if(ar.indexOf(x)===index){
    //     return true
    // }else{
    //     return false
    // }
    return ar.indexOf(x) === index
})

console.log(unique_ar)

reduce實現陣列去重程式碼

/**
 * reduce
 */

let ar = [1, 2, 2, 3, 4, 4, 5]
let mySum=ar.reduce((newArr,value)=>{
    console.log('item',value,newArr.indexOf(value))
    newArr&&newArr.indexOf(value)>0?null:newArr.push(value);
    console.log('newArr',newArr)
    return newArr;
},[])
console.log('reduce去重後',mySum)

重點思考:

各自的實現思想是什麼?

filter的去重方法:利用了過濾方法——filter,遍歷呼叫它的這個陣列,並且不改變原陣列。巧妙地通過filter函式,每次遍歷陣列元素都會有一個返回值的“true”或“false”的特性,簡潔的實現去重,最終得到一個新的陣列。

reduce的去重方法:利用了reduce自動求和方法,可以設定一個和的初始值,來存最後去重後的陣列。主要是判斷當前被遍歷的元素是否存在於newArr中,有的話,不做任何操作,沒有的話,就把它放進去,最後返回出一個去重後的結果陣列。同樣,這個方法也是沒有改變原來的陣列。