美文网首页
ES6 笔记 集合

ES6 笔记 集合

作者: yangweigbh | 来源:发表于2017-01-23 10:22 被阅读10次

ES6 中加入了Set, Map, WeakSet, WeakMap

为什么加入集合

Javascript中的Object,类似于map,可以向其中添加key-value对(属性),可以getsetdeleteiterate属性,但是Object相较于Map有以下缺点:

  • 作为Map的Object的方法名有可能和属性名冲突

  • 创建作为Map的Object时需要使用Object.create(null)避免继承Object中的方法

  • 属性的key必须是字符串

  • 无法得到有多少属性

  • 无法和for...of使用

ES6中的集合不会将数据暴露成属性,而是必须使用get(key)方法获取

Set

  • new Set() 创建空的Set
  • new Set(iterable)用iterable的value创建Set
  • set.size set的大小
  • set.has(value) value是否在set中
  • set.add(value) 向set中添加一个value,如果value已经存在,则不作操作
  • set.delete(value)从set删除value,adddelete都返回set本身
  • set[Symbol.iterator]()返回set的迭代器
  • set.forEach(f) 对每个value调用f,跟一下等价
for (let value of set)
    f(value, value, set);
  • set.clear() 删除set中所有值
  • set.keysset.valuesset.entries()返回对用的迭代器

Map

  • new Map创建空的Map
  • new Map(pairs) pair可以是Map,两元素Array的Array,或者产生两元素数组的generator
  • map.size Map中entry的数量
  • map.has(key) key是否在map存在
  • map.get(key) 得到key的value,如果key不存在,返回undefined
  • map.set(key, value) 添加key-value对
  • map.delete(key) 删除一个entry
  • map.clear() 删除所有entry
  • map[Symbol.iterator]() 返回entry的iterator
  • map.forEach(f) 同以下:
for (let [key, value] of map)
  f(value, key, map);
  • map.keys()map.values()map.entries()返回对应的iterator

JS集合的不同之处

  • object没hashcode
var urls = new Set;
urls.add(new URL(location.href));  // two URL objects.
urls.add(new URL(location.href));  // are they the same?
alert(urls.size);  // 2
  • 遍历Map和Set时,是按value插入的顺序

WeakMap和WeakSet

weakMap的key和WeakSet的value都是弱引用的,不会影响GC

  • WeakMap支持 newhasgetsetdelete

  • WeakSet 支持newhasadddelete

  • WeakSet的value和WeakMap的key必须是object

相关文章

  • ES6 笔记 集合

    ES6 中加入了Set, Map, WeakSet, WeakMap 为什么加入集合 Javascript中的Ob...

  • ES6中的Set集合

    在ES6中,出现了新的概念:Set集合和Map集合。在ES6之前,数组是JS中唯一的集合类型。如果对数组有深入理解...

  • 数组去重的方法总结(2017年)

    现在要求去重下面这个数组 方法一:ES6 Set() Set 是ES6新加的集合,集合中的值不会重复。 ......

  • 【ES6 笔记】Set集合与Map集合

    Set 集合是一种无重复元素的列表,开发者们一般不会像访问数组元素那样逐一访问每个元素,通常的做法是检测给定的值在...

  • Ant Design Pro的知识储备

    Less 笔记 Less 官方文档 ReactJs笔记 ReactJs官方文档 ES6笔记 ES6文档 dvaJs...

  • es6-Set集合与Map集合

    title: es6-Set集合与Map集合date: 2018-02-08 21:55:41tags: es6 ...

  • [总结]ES6 Array

    学习es6时做得小笔记

  • 前端-算法2:集合、字典

    集合 一种无序且唯一的数据结构 ES6中有集合,名为Set 集合的常用操作: 去重、判断元素是否在集合中,求交集 ...

  • 算法 - 集合

    集合 一种无序且唯一的数据结构 ES6中有集合,名为Set 集合的常用操作:去重、判断某元素是否在集合中、求交集 ...

  • Map、WeakMap、Set、WeakSet

    ES6引入了四种新的数据结构:映射(Map)、集合(Set)、弱集合(WeakSet)和弱映射(WeakMap) ...

网友评论

      本文标题:ES6 笔记 集合

      本文链接:https://www.haomeiwen.com/subject/zacabttx.html