最近在freeCodeCamp上練手js算法題,發(fā)現(xiàn)有很多題目可以直接return一個(gè)鏈?zhǔn)秸{(diào)用的對(duì)象完成什黑,恰巧趕上熟悉了filter方法崎淳,特此介紹
法一:
[需要去重的數(shù)組].filter( (item, index ,arr)=>arr.indexOf(item) === index )
意思是,對(duì)于重復(fù)的元素 傳入indexOf方法愕把,輸出的是數(shù)組中第一次出現(xiàn)的下標(biāo)而非它本身的下標(biāo)凯力,效果:
控制臺(tái)測(cè)試
filter函數(shù)介紹:
filter是Array的原型方法,filter接受一個(gè)函數(shù)礼华,函數(shù)可以傳3個(gè)參數(shù):分別是遍歷到的元素對(duì)象,前者的下表和數(shù)組本身拗秘,如果函數(shù)返回真圣絮,就把該元素加到新數(shù)組中,遍歷完成后雕旨,filter返回一個(gè)包含遍歷是碰到每個(gè)return true對(duì)應(yīng)元素的數(shù)組扮匠;
示例:
var array = [1,2,3,4,5,6,7,8,9];
var newArray = array.filter(function(item){
return item % 2 === 0;//保留偶數(shù)
});
console.log(newArray)//[2,4,6,8]
console.log(array)//不會(huì)改變?cè)瓟?shù)組
法二,ES6中使用Set數(shù)據(jù)結(jié)構(gòu)和...拓展運(yùn)算符可以更加簡(jiǎn)潔地達(dá)到這個(gè)效果
[...new Set([1,1,1,1,1,2,3,3,3,3,3])] //[1,2,3]