zoukankan      html  css  js  c++  java
  • Set与Map

    Ecmascript-6
    ES6 发布时间2015-6月,又称ECMAScript 2015

    http://kangax.github.io/compat-table/es6/

    Set

    • 没有重复值的集合
    • Set本身是一个构造函数,可以用来生成set的数据结构
    • 其内部比较采用的是 === 全等
    var s = new Set();
    [7,2,3,4,5,6,2,5].map( (item) => s.add(item));
    
    for( let i of s ) {
    	console.info(i);
    }
    
    结果:
    7
    2
    3
    4
    5
    6
    

    实例属性与方法

    • Set.prototype.constructor: 构造函数,默认就是Set函数
    • Set.prototype.size: 返回Set实例的成员总数

    操作方法

    • add(value) 添加值,并返回Set结构本身
    • delete(value) 删除某个值,返回一个boolean值,表示是否删除成功
    • has(value) 判断是否存在某个值,返回一个boolean值
    • clear() 清除所有值,无返回值

    遍历方法

    • keys() 返回键名遍历器
    • values() 返回键值遍历器
    • entries() 返回键值对遍历器
    • forEach() 使用回调函数遍历 无返回值
    • for ... of 来遍历
    	数组去重
    	function dedupe(array) {
    		return Array.from( new Set(array) );
    	}
    

    WeakSet

    区别于Set

    • 成员只能是对象,不能是其他的数据类型
    • 对象的引用是弱引用,即垃圾回收机制不考虑weakset对该对象的引用; 意味着成员随时可能消失,存在无法引用的weakset成员,因此weakset是不可遍历的
    • 没有size属性
    • 用处:存储DOM节点,而不用担心这些节点从文档删除时,会引发内存泄漏
    var a= [[1,2],[3,4]];
    var ws = new WeakSet(a);
    
    • WeakSet.prototype.add(value)
    • WeakSet.prototype.delete(value)
    • WeakSet.prototype.has(value)

    Map

    • 存储key-value键值对形式的集合
    • 区别于object{只能存储字符串的键名}; 可以存储各种类型的值作为键名

    实例属性与操作方法

    • size 成员总数
    • set(key, value) 设置数值; 如果key存在,则直接更新键值
    • get(key) 通过key获取值; 如果获取不到返回undefined
    • has(key) 返回boolean类型,检测是否存在键
    • delete(key) 删除某个键
    • clear() 清除所有成员
    遍历方法
    • keys() 返回键名遍历器
    • values() 返回键值遍历器
    • entries() 返回键值对遍历器
    • forEach() 使用回调函数遍历 无返回值
    • for ... of 来遍历
     var map = new Map([
    	 ['F', 'no'],
    	 ['T', 'yes']
     ]);
     for( let [key, value] of map.entries() ) {
    	 console.info(key , value);
     }
    

    WeakMap

    • WeakMap结构与Map结构基本类似,唯一的区别它只接受对象作为键名(null除外),不接受其他类型的值作为键名,而且键名所指向的对象,不计入垃圾回收机制
    • 没有遍历操作
    • 不包含size属性
  • 相关阅读:
    在当前的webview中跳转到新的url 使用WebView组件显示网页
    android WebView中js的alert()失效
    移动平台的WebApp之Meta标签
    CSS背景属性Background详解
    JS仿淘宝左侧菜单
    什么是 Backbone.js
    mssql Row_Number() 分页 DISTINCT 问题
    跟我一起玩转Sencha Touch 移动 WebApp 开发(一)
    HTML5 book响应式翻页效果
    HTML5开发的翻页效果实例
  • 原文地址:https://www.cnblogs.com/pengsn/p/12874176.html
Copyright © 2011-2022 走看看