今天偶尔在翻看ES6的新内容的时候,发现有个新的Set数据格式,声明方法就是
var s = new Set([1,2,3]);
他可以自动过滤数据的重复内容,比如:
var s = new Set([2,3,5,5,5,'5']);
console.log(s);
后台打印结果是 : Set(4) {2, 3, 5,'5'}
注意 : 数字的5和字符串的'5'不属于重复内容.
接下来会发现,出来的结果虽然去重了,但是并不是想要的数组形式.那怎么办呢?
ES6中的 for of 循环就很好的解决了这个问题.他可以遍历Set 以及对象或者数组等形式的数据格式.通过遍历这个去重后的Set结果,把每一项内容都推进一个新的数组中,这样我们就得到了去重后的数组.
整个过程的代码如下(这是扩展数组内置方法的形式,当然你也可以直接把主要逻辑代码放在一个普通的函数中):
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())
好啦,动手试试结果吧~
注意一点,因为这个方法用了ES6的内容,所以有些浏览器会不支持.