es6学习(Set和Map)

Set和Map

1.Set是一个类似数组的数据结构,成员的值都是唯一的,没有重复的值。

通过new Set()来生成一个Set的数据结构。

var s = new Set();

打印之后会看到如下信息:

image

会看到拥有一个size属性,来获取长度。同时会看到Set.prototype拥有许多来操作set的方法:

  • add(value): 添加某个值,返回Set结构本身。
  • clear(): 清空set。
  • delete(value): 删除某个值,返回true/false, true表示成功。
  • has(value): 是否存在某个值,返回true/false, true表示存在。

  • constructor: 构造函数,默认是Set函数。

  • size: 返回Set实例成员总数。

  • keys():返回所有的键名,用于Set没有键名,其返回的是键值。

  • values():返回所有的键值。
  • entries(): 返回键名和键值(键名==键值)。
var s = new Set();

s.add(1);
// Set {1}
s.add([1,2]);
// Set {1, [1, 2]}
s.add({name: 'ayguo'});
// Set {1, [1, 2], Object {name: "ayguo"}}

s.has(1);
// true
s.has(2);
// false

s.delete(1); // true
// Set {[1, 2], Object {name: "ayguo"}}
s.delete('a'); // false
// Set {[1, 2], Object {name: "ayguo"}}


// s.clear();
// Set {}


for(let item of s.values()){
    console.log(item);
}

for(let item of s){
    console.log(item);
}

s.forEach((value, key) => console.log(value));

console.log(s);
2.WeakSet结构和Set类似,也是不重复值的集合。与Set有两个区别。

首先,WeakSet的成员只能是对象,而不能是其他类型的值。
其次,WeakSet中的对象都是弱引用,其对象的改变不会反映到WeakSet上。

image

注意:是参数里面的成员成为WeakSet的成员,因此参数里面的成员需要是对象。
3.Map是一个新的数据结构,类似Object键值对的集合(hash结构)。与Object不同的是:Object的键只能是字符串,而Map的键可以是任意值。

image

属性和方法:
- size: 获取Map实例的成员总数。
- set(key, value): 给Map设置值,如果存在则更新,返回Map结构。
- get(key): 获取对应键的值。
- has(key): 是否存在对应的成员。
- delete(key): 删除某个成员。
- clear(): 清空成员。
- keys():获取所有的键。
- values():获取所有的值。
- entries()forEach():遍历Map。

var m = new Map();
var o = new Object();

m.set(1, 'hello');
// Map {1 => "hello"}
m.set(o, 'object');
// Map {1 => "hello", Object {} => "object"}

m.get(o);
// "object"

m.has(o);
// true
m.has(5);
// false

m.delete(1); // true
// Map {Object {} => "object"}

// m.clear(); 
// Map {}


for(let key of m.keys()){
    console.log(key);
}


for(let val of m.values()){
    console.log(val);
}


for(let item of m.entries()){
    console.log(item);
}

m.forEach(function(val, key, map){
    console.log(val, key);
});


[...m.keys()];
[...m.values()];
[...m.entries()];
4.WeakMap结构和Map结构类似,WeakMap只接受对象作为键名。

image

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值