javascript数组去重巧妙方法

今天偶尔在翻看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的内容,所以有些浏览器会不支持.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容