zoukankan      html  css  js  c++  java
  • 利用set实现去重

    最近读了一些有关于ES6的文章,觉得真是一个超级大的进步,就是不知道兼容性怎么样,鉴于我还在初学,先写个小例子练手,顺便时刻提醒自己要坚持学下去。未来的趋势肯定是替代es5没跑了。

        var arr=[1,2,1,3,2,4,5,1,3];
        var setArr=new Set(arr);
        var newArr=[];
        setArr.forEach(function(e){
            newArr.push(e);
        });
        console.log(newArr);
    

     set是es6里新提出的一个集合的概念,类似于数组arr,同样不只是数字类型,其他类型的数据如字符串等也是支持的,set有个和数组不同的特性就是重复的元素加入集合中是无效的,因此一个数组,利用set.add来加入到这个集合中来就自动实现了去重的步骤。

    以下是Set支持的所有操作:

    • new Set:创建一个新的、空的Set
    • new Set(iterable):从任何可遍历数据中提取元素,构造出一个新的集合。
    • set.size:获取集合的大小,即其中元素的个数。
    • set.has(value):判定集合中是否含有指定元素,返回一个布尔值。
    • set.add(value):添加元素。如果与已有重复,则不产生效果。
    • set.delete(value):删除元素。如果并不存在,则不产生效果。.add().delete()都会返回集合自身,所以我们可以用链式语法。
    • set[Symbol.iterator]():返回一个新的遍历整个集合的迭代器。一般这个方法不会被直接调用,因为实际上就是它使集合能够被遍历,也就是说,我们可以直接写for (v of set) {...}等等。
    • set.forEach(f):直接用代码来解释好了,它就像是for (let value of set) { f(value, value, set); }的简写,类似于数组的.forEach()方法。
    • set.clear():清空集合。
    • set.keys()set.values()set.entries()返回各种迭代器,它们是为了兼容Map而提供的
  • 相关阅读:
    敏捷不是XP(口水文)
    利用异或的特性解决,找出重复数的问题,应该是目前最优算法。
    开源和免费那些事儿(二)
    开源和免费那些事儿
    LINQ本质 外篇 JOIN补遗
    在北京求.NET开发职位,人已经到达北京
    软件是邪恶的
    最近遇到的两个面试题兼卖身广告
    谈谈信仰和银弹。
    继续高阶函数好玩有用的扩展(网吧行文)
  • 原文地址:https://www.cnblogs.com/weblv/p/5192178.html
Copyright © 2011-2022 走看看