Set 和 Map

Set 和 Map

一、Set

  • 松散结构,添加删除速度快,存储没有顺序,不能排序,查找速度块

  • 不可以使用 for in 和 for 遍历

  • 有专门的迭代器遍历方法 for of

  • 不存储相同的数据,没有重复内容

  • 语法:

    • new Set().add() 添加
      • 一次只能添加一个
    • new Set().delete() 删除
    • new Set().clear() 清空集合
var s = new Set();
s.add(3);
s.add(4);
s.add(5);
console.log(s); //Set(3) {3, 5, 6}

s.delete(3);
console.log(s); //Set(2) { 5, 6}

s.clear();
console.log(s); //Set(0) {}
  • 在 new Set()的时候可以放入任何迭代器内容
var s = new Set(document.querySelectorAll('div'));
console.log(s); //Set(4) {div.div1, div.div1, div, div}

for of 迭代器遍历方法

  • for of 仅能用于迭代器对象遍历
  • 拥有 Symbol.iterator 该属性的就是迭代器对象
    • 数组、document 获取元素方法返回的数组、

二、WeakSet

  • 只能添加引用类型,不能遍历

三、Mpa

  • 是键值对,代表键唯一对应一个值
  • Map 的键可以使任意类型,对象的值只能是字符或者 Symbol
  • Mpa 是有大小的。就是存储的数据的多少,对象是没有长度的

entries 将对象转换为迭代器
formEnteries 将迭代器转换为对象

var m = new Map(Object.entries({ a: 1, b: 2, c: 3 }));
console.log(m); //Map(3) {'a' => 1, 'b' => 2, 'c' => 3}
  • set 设置 key 和 value 添加在 Map 中
    • new Map().set( key, value )
    • 可以映射存储
  • get 根据 key 获取 value
var m = new Map();
var o1 = { a: 1 };
var o2 = { a: 2 };
var o3 = { a: 3 };
var o4 = { a: 4 };
// set 设置key和value添加在Map中
m.set(o1, o2);
m.set(o2, o3);
m.set(o3, o4);

console.log(m);
// Map(3) {{…} => {…}, {…} => {…}, {…} => {…}}
/* 
Map 内容
0: {Object => Object}
1: {Object => Object}
2: {Object => Object}
*/
// get 根据key获取value
console.log(m.get(o1)); //o2 {a:1}
console.log(m.get(o2)); //o3 { a:3 }
console.log(m.get(o3)); //o4 {a:4}
  • delete 根据 key 删除对应的 value
m.delete(o1);
console.log(m);
// Map(2) {{…} => {…}, {…} => {…}}
/* 
0: {Object => Object}
1: {Object => Object} 
*/
  • clear 清空 Map 中的内容
m.clear();
console.log(m);
//Map(0) {size: 0}
  • has 根据 key 判断是否存储这个数据
console.log(m.has(o1));
// true
  • key 获取所有 Key 形成的迭代器
for (var key of m.keys()) {
  console.log(key);
  /* 
  {a: 1}   // o1
  {a: 2}   // o2
  {a: 3}   // o3
  */
}
  • value 获取所有 value 形成的迭代器
for (var value of m.value()) {
  console.log(value);
  /* 
  {a: 2}   // o2
  {a: 3}   // o3
  {a: 4}   // o4
  */
}
  • entries 获取所有 entries 形成的迭代器
for (var [key, value] of m.entries()) {
  console.log(key, value);
  /* 
  {a: 1} {a: 2}   // o1 ~ o2
  {a: 2} {a: 3}   // o2 ~ o3
  {a: 3} {a: 4}   // o3 ~ o4
  */
}

四、WeakMap

  • 弱引用类型的 Map
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值