最近在freeCodeCamp上練手js算法題,發現有很多題目可以直接return一個鏈式調用的對象完成,恰巧趕上熟悉了filter方法,特此介紹
法一:
[需要去重的數組].filter( (item, index ,arr)=>arr.indexOf(item) === index )
意思是,對于重復的元素 傳入indexOf方法,輸出的是數組中第一次出現的下標而非它本身的下標,效果:
控制臺測試
filter函數介紹:
filter是Array的原型方法,filter接受一個函數,函數可以傳3個參數:分別是遍歷到的元素對象,前者的下表和數組本身,如果函數返回真,就把該元素加到新數組中,遍歷完成后,filter返回一個包含遍歷是碰到每個return true對應元素的數組;
示例:
var array = [1,2,3,4,5,6,7,8,9];
var newArray = array.filter(function(item){
return item % 2 === 0;//保留偶數
});
console.log(newArray)//[2,4,6,8]
console.log(array)//不會改變原數組
法二,ES6中使用Set數據結構和...拓展運算符可以更加簡潔地達到這個效果
[...new Set([1,1,1,1,1,2,3,3,3,3,3])] //[1,2,3]