当前位置: 首页 > wzjs >正文

做特殊任务的网站西安今天刚刚发生的新闻

做特殊任务的网站,西安今天刚刚发生的新闻,用凡科帮别人做网站,讯美深圳网站建设ES6 中 Set、Map、WeakMap 和 WeakSet 数据结构详解及使用示例表达 一、Set 数据结构 Set 是一种集合数据结构,用于存储任意类型的唯一值。它不允许重复的值存在。 声明方式: 使用 new Set() 创建新的实例。 const mySet new Set();主要方法: .add(value)&#x…

ES6 中 Set、Map、WeakMap 和 WeakSet 数据结构详解及使用示例表达

一、Set 数据结构

Set 是一种集合数据结构,用于存储任意类型的唯一值。它不允许重复的值存在。

  • 声明方式:
    使用 new Set() 创建新的实例。

    const mySet = new Set();
    
  • 主要方法:

    • .add(value):向集合中添加一个新值。
      mySet.add(1);
      mySet.add("string");
      
    • .delete(value):删除指定的值。
      mySet.delete(1);
      
    • .has(value):判断集合中是否存在某个值。
      console.log(mySet.has("string")); // true
      
    • .clear():清空整个集合中的所有值。
      mySet.clear();
      
    • .size:返回集合中元素的数量。
      console.log(mySet.size); // 当前集合大小
      
  • 使用场景:

    • 数组去重是一个常见的应用场景。
      const array = [1, 2, 2, 3, 4];
      const uniqueArray = [...new Set(array)];
      console.log(uniqueArray); // [1, 2, 3, 4]
      

二、Map 数据结构

Map 是一种键值对的数据结构,支持任何类型的键(不仅仅是字符串),提供更高的灵活性和性能。

  • 声明方式:
    使用 new Map() 或传递初始键值对数组创建实例。

    const myMap = new Map();
    const mapWithInitialValues = new Map([[obj1, "aaa"], [obj2, "bbb"], [2, "ddd"]]);
    
  • 主要方法:

    • .set(key, value):设置键值对。
      myMap.set("name", "Alice").set("age", 25);
      
    • .get(key):通过键获取对应的值。
      console.log(myMap.get("name")); // Alice
      
    • .delete(key):删除指定键及其关联的值。
      myMap.delete("age");
      
    • .has(key):检查是否包含特定键。
      console.log(myMap.has("name")); // true
      
    • .clear():清除所有的键值对。
      myMap.clear();
      
    • .size:返回键值对的数量。
      console.log(myMap.size); // 键值对数量
      
  • 特殊能力:

    • 支持对象或数组作为键。
      const objKey = { id: 1 };
      const map = new Map();
      map.set(objKey, "Object Key");
      console.log(map.get(objKey)); // 'Object Key'
      
  • 使用场景:

    • 动态缓存某些复杂键值对的关系时,Map 更加适合。

三、WeakMap 数据结构

WeakMap 是一种特殊的映射表,其键必须是对象,且这些对象不会阻止垃圾回收的发生。

  • 声明方式:
    使用 new WeakMap() 创建实例。

    const weakMap = new WeakMap();
    
  • 主要方法:

    • .set(key, value):设置键值对。
      const objKey = {};
      weakMap.set(objKey, "value");
      
    • .get(key):通过键获取对应的值。
      console.log(weakMap.get(objKey)); // value
      
    • .delete(key):删除指定键及其关联的值。
      weakMap.delete(objKey);
      
    • .has(key):检查是否包含特定键。
      console.log(weakMap.has(objKey)); // false
      
  • 特点:

    • 不允许迭代,也不暴露 .keys().values() 方法。
    • 键只能是对象,无法使用原始类型作为键。
  • 使用场景:

    • 绑定私有属性到对象而不影响全局作用域。
      const privateData = new WeakMap();
      function MyClass(data) {privateData.set(this, data);
      }
      MyClass.prototype.getData = function() {return privateData.get(this);
      };
      const instance = new MyClass({ secret: "hidden" });
      console.log(instance.getData()); // { secret: "hidden" }
      

四、WeakSet 数据结构

WeakSet 类似于 Set,但它只接受对象作为成员,并且这些对象也不会被强引用保留。

  • 声明方式:
    使用 new WeakSet() 创建实例。

    const weakSet = new WeakSet();
    
  • 主要方法:

    • .add(value):添加一个对象到集合中。
      const obj = {};
      weakSet.add(obj);
      
    • .delete(value):从集合中移除指定的对象。
      weakSet.delete(obj);
      
    • .has(value):检查集合中是否包含某个对象。
      console.log(weakSet.has(obj)); // false
      
  • 特点:

    • 不允许遍历,也没有 .forEach() 等方法。
    • 成员仅限于对象,不支持其他类型。
  • 使用场景:

    • 跟踪一组对象的状态,而不需要显式销毁它们。
      const trackedObjects = new WeakSet();
      function track(object) {trackedObjects.add(object);
      }
      function isTracked(object) {return trackedObjects.has(object);
      }
      const obj = {};
      track(obj);
      console.log(isTracked(obj)); // true
      

示例代码总结

以下是综合使用的示例:

// Set 示例
const setExample = new Set([1, 2, 3, 3]);
console.log(setExample); // Set(3) { 1, 2, 3 }// Map 示例
const mapExample = new Map();
mapExample.set({ key: "unique" }, "value");
console.log(mapExample.get({ key: "unique" })); // undefined (因为每次创建的对象不同)const sameObj = { key: "same" };
mapExample.set(sameObj, "sharedValue");
console.log(mapExample.get(sameObj)); // sharedValue// WeakMap 示例
const weakMapExample = new WeakMap();
const objForWeakMap = {};
weakMapExample.set(objForWeakMap, "data");
console.log(weakMapExample.get(objForWeakMap)); // data// WeakSet 示例
const weakSetExample = new WeakSet();
const objForWeakSet = {};
weakSetExample.add(objForWeakSet);
console.log(weakSetExample.has(objForWeakSet)); // true

在这里插入图片描述

http://www.dtcms.com/wzjs/125185.html

相关文章:

  • 获取360网站卫士后的真实ip企点qq
  • 网站降权是什么意思南宁网站seo排名优化
  • 设计logo网站免费南蒲四特珠海百度推广优化排名
  • 网站建设公司哪家好要选磐石网络seo权重优化
  • 购买网站设计制作百中搜优化软件
  • 配音网站赚钱2022近期重大新闻事件10条
  • 微信网站建设公司个人网站制作软件
  • 自己如何做网站源码bt蚂蚁磁力
  • 网站建设的评分细则高州网站seo
  • 个人网站名称大全百度一下子就知道了
  • 做app网站设计网络营销五个主要手段
  • 山东做网站费用百度一下搜索一下
  • 网站建设 重庆关键词推广是什么
  • 福田网站建设方案服务软文广告例子
  • 自动做设计的网站网络推广需要什么
  • 广州做网站优化费用潍坊网站建设平台
  • 深圳微信推广平台seo排名工具哪个好
  • 现在电商做的设计用的什么网站北京seo推广
  • 建个网站做外贸刷链接浏览量网站
  • 做网站建设多少钱竞价托管的注意事项
  • 重庆网站建设公司价钱关键词挖掘方法
  • 淄博阿雷网站建设公司建设网站制作
  • jsp网站开发四库企业管理培训课程视频
  • 建筑网站建设公司手机制作网页用什么软件
  • 类似淘宝网 的淘宝客网站模板企业营销策划方案范文
  • 深圳宝安医院的网站建设企业网站模板免费下载
  • 手机端网站建站手册seo公司seo教程
  • php违章网站开发搜索引擎提交入口大全
  • html5能单独做网站吗百度推广在哪里能看到
  • 天津做家政的网站信息流优化师简历模板