用一行Array.filter去重JS數組

最近在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]

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容