vue技术学习es6 语法学习Vue.js

ES6基础教程(第十三节)——Set数据结构

2019-07-09  本文已影响1人  多平方

​ES6新增了Set结构以及WeakSet结构,这节课就对这两种结构进行解析。

Set结构:

var s = new Set();

console.log(s);

//打印结果:Set {}

var s = new Set([1,2,3]);

console.log(s);

//打印结果:Set {1, 2, 3}

var s = new Set([1,2,3,1,2,3]);

console.log(s);

//打印结果:Set {1, 2, 3}

看出规律了吧,Set结构的成员值是没有重复的,每个值都是唯一的,重复的值会自动舍去。

现在说说 Set()的方法:add()、delete()、clear()、has()、entries()、keys()、values()、forEach()以及size属性:

add()是Set的添加元素方法,很明显,set结构会自动忽略相同的值,只会保留一个相同的值;

var s = new Set();

s.add(1);

s.add(1);

console.log(s);

//打印结果:Set {1}

delete()为set的删除元素方法,删除成功返回true,删除失败返回false,在没有此元素时候会返回删除失败。

//用数组作为参数初始化

var s = new Set([1,2,3]);

console.log(s);

//打印结果:Set {1, 2, 3}

//使用delete方法删除指定值

s.delete(2);//结果:true

s.delete(4);//结果:false

console.log(s);

//打印结果:Set {1, 3}

clear( )方法:清除所有成员:

//用数组作为参数初始化

var s = new Set([1,2,3]);

console.log(s);

//打印结果:Set {1, 2, 3}

s.clear();

console.log(s);

//打印结果:Set {}

has()方法:判断set结构中是否含有指定的值:

//用数组作为参数初始化

var s = new Set([1,2,3]);

s.has(1);//结果:true

s.has(4);//结果:false

entries( )方法:返回一个键值对的遍历器:

//用数组作为参数初始化

var s = new Set(['a','b','c']);

s.entries();

//结果:SetIterator {["a", "a"], ["b", "b"], ["c", "c"]}

注意得到的结果,成员值“a”对应的键值对是[“a”,”a”],也就是说:Set结构是键名和键值是同一个值。

keys( )方法:返回键名的遍历器。

values( )方法:返回键值的遍历器。

//用数组作为参数初始化

var s = new Set(['a','b','c']);

s.keys();

//结果:SetIterator {"a", "b", "c"}

s.values();

//结果:SetIterator {"a", "b", "c"}

我把两个函数放在一起演示,是因为上面 entries()方法的使用告诉我们,Set结构的键名和键值是同一个值,那么我们就用 Set结构提供的 keys()和 values()方法来检验一下。从得到的结果可以看出:两者确实一致。

forEach()方法:遍历每一个成员:

//用数组作为参数初始化

var s = new Set(['a','b','c']);

//使用回调函数遍历每个成员

s.forEach(function(value,key){

console.log(value,key)

});

//打印结果:a a

// b b

// c c

使用方式跟数组的forEach一样。当然,得到的value是key的值是一样的。

WeakSet结构:

WeakSet结构同样不会存储重复的值,不同的是,它的成员必须是对象类型的值。(严格来说是:具有 iterable 接口的对象)

//初始化一个WeakSet对象

let ws = new WeakSet([{"age":18}]);

//结果:WeakSet {Object {age: 18}}

同样,WeakSet结构也提供了 add( ) 方法,delete( ) 方法,has( )方法给开发者使用,作用与用法跟Set结构完全一致。

另一个不同点是:WeakSet 结构不可遍历。因为它的成员都是对象的弱引用,随时被回收机制回收,成员消失。所以WeakSet 结构不会有keys( ),values( ),entries( ),forEach( )等方法和size属性。

公众号
上一篇下一篇

猜你喜欢

热点阅读