今天偶爾在翻看ES6的新內(nèi)容的時候,發(fā)現(xiàn)有個新的Set數(shù)據(jù)格式,聲明方法就是
var s = new Set([1,2,3]);
他可以自動過濾數(shù)據(jù)的重復(fù)內(nèi)容,比如:
var s = new Set([2,3,5,5,5,'5']);
console.log(s);
后臺打印結(jié)果是 : Set(4) {2, 3, 5,'5'}
注意 : 數(shù)字的5和字符串的'5'不屬于重復(fù)內(nèi)容.
接下來會發(fā)現(xiàn),出來的結(jié)果雖然去重了,但是并不是想要的數(shù)組形式.那怎么辦呢?
ES6中的 for of 循環(huán)就很好的解決了這個問題.他可以遍歷Set 以及對象或者數(shù)組等形式的數(shù)據(jù)格式.通過遍歷這個去重后的Set結(jié)果,把每一項內(nèi)容都推進(jìn)一個新的數(shù)組中,這樣我們就得到了去重后的數(shù)組.
整個過程的代碼如下(這是擴(kuò)展數(shù)組內(nèi)置方法的形式,當(dāng)然你也可以直接把主要邏輯代碼放在一個普通的函數(shù)中):
var arr = [2,2,4,5,6,7,7,7,44,66,66,7];
Array.prototype.noRepeat = function(){
var newArr = [];
var s = new Set(this);
for(var x of s){
newArr.push(x);
}
return newArr;
}
console.log(arr.noRepeat())
好啦,動手試試結(jié)果吧~
注意一點,因為這個方法用了ES6的內(nèi)容,所以有些瀏覽器會不支持.