HTML5技术

es6笔记5^_^set、map、iterator - webNick

字号+ 作者:H5之家 来源:H5之家 2017-01-20 14:00 我要评论( )

一、set 1.基本用法 数据结构Set类似于数组,但是成员的值都是唯一的,没有重复的值。 let s = new Set();[ 2,3,5,4,5,2,2].map(x = s.add(x)) for (let i of s) {console.log(i)} // 2 3 5 4 // Set函数可以接受一个数组作为参数,用来初始化。 var items =

一、set 1.基本用法   数据结构Set类似于数组,但是成员的值都是唯一的,没有重复的值。

let s = new Set(); [2,3,5,4,5,2,2].map(x => s.add(x)) for (let i of s) {console.log(i)}// 2 3 5 4 //Set函数可以接受一个数组作为参数,用来初始化。 var items = new Set([1,2,3,4,5,5,5,5]); console.log(items); // set object console.log(items.size); // 5 //向Set加入值的时候,不会发生类型转换,所以5和“5”是两个不同的值。 let set = new Set(); set.add({}) console.log(set.size);// 1 set.add({}) console.log(set.size);// 2 //上面代码表示,由于两个空对象不是精确相等,所以它们被视为两个值。

2.Set实例的属性 Set结构的实例有以下属性。
Set.prototype.constructor:构造函数,默认就是Set函数。
Set.prototype.size:返回Set实例的成员总数。

let s = new Set(); s.add(1).add(2).add(2);// 注意2被加入了两次 console.log(s); console.log(s.size); // 2

3.Set实例的方法 分为两大类:
  操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。

  add(value):添加某个值,返回Set结构本身。
  delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  has(value):返回一个布尔值,表示该值是否为Set的成员。
  clear():清除所有成员,没有返回值。
上面这些属性和方法的实例如下:

let s = new Set(); s.add(1).add(2).add(2); console.log(s.has(1));// true console.log(s.has(2)); // true console.log(s.has(3));// false s.delete(2); console.log(s.has(2));// false s.clear(); console.log(s.size);//0 //Array.from方法可以将Set结构转为数组: let items = new Set([1, 2, 3, 4, 5]); let array = Array.from(items); console.log(array);//[1, 2, 3, 4, 5]

4.遍历操作 Set结构的实例有四个遍历方法,可以用于遍历成员。
  keys():返回一个键名的遍历器
  values():返回一个键值的遍历器
  entries():返回一个键值对的遍历器
  forEach():使用回调函数遍历每个成员
由于Set结构没有键名,只有键值(或者说键名和键值是同一个值),所以key方法和value方法的行为完全一致。

let set = new Set(['red', 'green', 'blue']); for ( let item of set.keys() ){ console.log(item);// red green blue } for ( let item of set.values() ){ console.log(item);// red green blue } for ( let item of set.entries() ){ console.log(item);// ["red", "red"] ["green", "green"] ["blue", "blue"] } set.forEach(function(item){ console.log(item);// red green blue })

二、WeakSet WeakSet和Set一样都不存储重复的元素,但有一些不同点 。
WeakSet的成员只能是对象,而不能是其他类型的值。
WeakSet结构有以下三个方法。
WeakSet.prototype.add(value):向WeakSet实例添加一个新成员。
WeakSet.prototype.delete(value):清除WeakSet实例的指定成员。
WeakSet.prototype.has(value):返回一个布尔值,表示某个值是否在

let ws = new WeakSet(); //console.log(ws.add(1));// TypeError: Invalid value used in weak set let obj = {}; let foo = {}; ws.add(window); ws.add(obj); console.log(ws); console.log(ws.has(window)); // true console.log(ws.has(foo)); // false ws.delete(window); console.log(ws.has(window)); // false //WeakSet没有size属性,没有办法遍历它的成员。 console.log(ws.size) // undefined console.log(ws.forEach); // undefined //ws.forEach(function(item){ console.log('WeakSet has ' + item)})// TypeError: undefined is not a function

三、Map结构的目的和基本用法 Map 是一个“超对象”,其 key 除了可以是 String 类型之外,还可以为其他类型(如:对象)
他的方法和 Set 差不多:
  size:返回成员总数。
  set(key, value):设置一个键值对。
  get(key):读取一个键。
  has(key):返回一个布尔值,表示某个键是否在Map数据结构中。
  delete(key):删除某个键。
  clear():清除所有成员。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • es6笔记4^_^function - webNick

    es6笔记4^_^function - webNick

    2017-01-19 14:00

  • es6笔记3^_^object - webNick

    es6笔记3^_^object - webNick

    2017-01-18 11:00

  • es6笔记2^_^array - webNick

    es6笔记2^_^array - webNick

    2017-01-16 13:01

  • 读书笔记:《HTML5开发手册》Web表单 - 绿岛之北

    读书笔记:《HTML5开发手册》Web表单 - 绿岛之北

    2017-01-14 15:04

网友点评