陣列去重方法:filter,reduce
阿新 • • 發佈:2021-02-01
技術標籤: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中,有的話,不做任何操作,沒有的話,就把它放進去,最後返回出一個去重後的結果陣列。同樣,這個方法也是沒有改變原來的陣列。