首页 > 其他分享 >js Set方法

js Set方法

时间:2024-01-15 11:04:26浏览次数:25  
标签:Set const alert add new js 方法 size

ECMAScript 6 新增的 Set 是一种新集合类型,为这门语言带来集合数据结构。Set 在很多方面都像是加强的 Map,这是因为它们的大多数 API 和行为都是共有的。

1. 基本API:

使用 new 关键字和 Set 构造函数可以创建一个空集合:

const m = new Set();

如果想在创建的同时初始化实例,则可以给 Set 构造函数传入一个可迭代对象,其中需要包含插入 到新集合实例中的元素:

// 使用数组初始化集合
const s1 = new Set(["val1", "val2", "val3"]);
    alert(s1.size); // 3
// 使用自定义迭代器初始化集合 const s2 = new Set({
      [Symbol.iterator]: function*() {
        yield "val1";
        yield "val2";
        yield "val3";
alert(s2.size); // 3

初始化之后,可以使用 add()增加值,使用 has()查询,通过 size 取得元素数量,以及使用 delete() 和 clear()删除元素:

const s = new Set();
alert(s.has("Matt"));
alert(s.size);
s.add("Matt")
 .add("Frisbie");
alert(s.has("Matt"));
alert(s.size);
s.delete("Matt");
alert(s.has("Matt"));
alert(s.has("Frisbie")); // true
alert(s.size);           // 1
s.clear(); // 销毁集合实例中的所有值
alert(s.has("Matt"));    // false
alert(s.has("Frisbie")); // false
alert(s.size);           // 0

add()返回集合的实例,所以可以将多个添加操作连缀起来,包括初始化:

const s = new Set().add("val1");
     s.add("val2")
      .add("val3");
     alert(s.size); // 3

与 Map 类似,Set 可以包含任何 JavaScript 数据类型作为值。集合也使用 SameValueZero 操作 (ECMAScript 内部定义,无法在语言中使用),基本上相当于使用严格对象相等的标准来检查值的匹配性。

const s = new Set();
     const functionVal = function() {};
     const symbolVal = Symbol();
     const objectVal = new Object();
 s.add(functionVal);
s.add(symbolVal);
s.add(objectVal);
alert(s.has(functionVal));
alert(s.has(symbolVal));
alert(s.has(objectVal));
// true
// true
// true
// SameValueZero 检查意味着独立的实例不会冲突 alert(s.has(function() {})); // false

标签:Set,const,alert,add,new,js,方法,size
From: https://blog.51cto.com/u_16251183/9250106

相关文章

  • js DOM 节点元数据
    这样,拿不到弱映射中的健,也就无法取得弱映射中对应的值。虽然这防止了前面提到的访问,但整个代码也完全陷入了ES6之前的闭包私有变量模式。constUser=(()=>{constwm=newWeakMap();classUser{constructor(id){this.idProperty=Symbol('id');......
  • js 弱键
    WeakMap中“weak”表示弱映射的键是“弱弱地拿着”的。意思就是,这些键不属于正式的引用,不会阻止垃圾回收。但要注意的是,弱映射中值的引用可不是“弱弱地拿着”的。只要键存在,键/值对就会存在于映射中,并被当作对值的引用,因此就不会被当作垃圾回收。来看下面的例子:constwm=ne......
  • js WeakMap
    ECMAScript6新增的“弱映射”(WeakMap)是一种新的集合类型,为这门语言带来了增强的键/值对存储机制。WeakMap是Map的“兄弟”类型,其API也是Map的子集。WeakMap中的“weak”(弱),描述的是JavaScript垃圾回收程序对待“弱映射”中键的方式。6.5.1基本API可以使用new关......
  • js 选择Object还是Map
    键和值在迭代器遍历时是可以修改的,但映射内部的引用则无法修改。当然,这并不妨碍修改作为键或值的对象内部的属性,因为这样并不影响它们在映射实例中的身份:constm1=newMap([["key1","val1"]]);//作为键的字符串原始值是不能修改的for(letkeyofm1.keys()){......
  • js 顺序与迭代
    与Object类型的一个主要差异是,Map实例会维护键值对的插入顺序,因此可以根据插入顺序执行迭代操作。映射实例可以提供一个迭代器(Iterator),能以插入顺序生成[key,value]形式的数组。可以通过entries()方法(或者Symbol.iterator属性,它引用entries())取得这个迭代器:constm......
  • python多线程模块:threading使用方法(参数传递)
    先来看这段代码:importthreadingimporttimedefworker():print“worker”time.sleep(1)returnforiinxrange(5):t=threading.Thread(target=worker)t.start()这段代码就使用了多线程,但是没法传递参数,而实际使用多线程,往往是需要传递参数的......
  • 操作滚动条小结:scrollIntoView/animate等方法的来龙去脉
    操作滚动条可以通过锚点跳转,JS操作滚动条,与scrollIntoView等方法。对此,我来考古一下。锚点跳转滚动滚动条网页中的锚点跳转是HTML早期功能之一,锚点(anchor)跳转是1991年发布的HTML标准的一部分,这是超文本链接的基本特性。锚点跳转通过使用<a>标签的href属性来创建指向页面内部某......
  • ElasticSearch降本增效常见的方法 | 京东云技术团队
    Elasticsearch在db_ranking的排名不断上升,其在存储领域已经蔚然成风且占有非常重要的地位。随着Elasticsearch越来越受欢迎,企业花费在ES建设上的成本自然也不少。那如何减少ES的成本呢?今天我们就特地来聊聊ES降本增效的常见方法:弹性伸缩分级存储其他:(1)数据压缩(2)off......
  • Js中的闭包
    Js中的闭包APR 11TH, 2017 5:11PM闭包的概念Wikipedia:Inprogramminglanguages,closures(alsolexicalclosuresorfunctionclosures)areatechniqueforimplementinglexicallyscopednamebindinginlanguageswithfirst-classfunctions.译文:”在编程语言......
  • ElasticSearch降本增效常见的方法 | 京东云技术团队
    Elasticsearch在db_ranking的排名不断上升,其在存储领域已经蔚然成风且占有非常重要的地位。随着Elasticsearch越来越受欢迎,企业花费在ES建设上的成本自然也不少。那如何减少ES的成本呢?今天我们就特地来聊聊ES降本增效的常见方法:弹性伸缩分级存储其他:(1)数据压缩(2)offheap1弹性伸缩......