Set WeakSet Map WeakMap的操作方法

Set

类似数组,成员值唯一,可以去重

const s = new Set();
[2,3,5,4,2,2,2].forEach(x=>s.add(x));
for (let i of s){
    console.log(i);
}  //2,3,5,4

Set的操作方法

  1. Set.prototype.add(value):添加某个值,返回Set结构本身
  2. Set.prototype.delete(value):删除某个值,返回一个布尔值表示是否删除成功
  3. Set.prototype.has(value):查询某个值是否为set的成员返回一个布尔值
  4. Set.prototype.clear(value):清除所有成员

Set的遍历方法

  1. Set.prototype.keys(): 返回所有键名的遍历器
  2. Set.prototype.values(): 返回所有键值的遍历器
  3. Set.prototype.entries() :返回所有键值对的遍历器
  4. Set.prototype.forEach(): 使用回调函数遍历每个成员
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"]
let set = new Set([1,2,9]);
set.forEach((value,key)=>console.log(key + ':' + value))
//1:1
//2:2
//9:9

WeakSet

成员只能是对象,被引用的对象都是弱引用(垃圾回收机制不考虑WeakSet对该对象的引用),WeakSet不可被遍历
由于WeakSet不可被遍历所以他没有size属性,也没有Set的遍历方法
WeakSet的操作方法

  1. WeakSet.prototype.add(value):向WeakSet中添加一个实例
  2. WeakSet.prototype.delete(value):向WeakSet中删除一个实例
  3. WeakSet.prototype.has(value):返回一个布尔值,表示某个值是否在WeakSet中

Map

类似对象,也是键值对集合但是键的范围不限于字符串,可以是各种类型的值
Map的操作方法:

  1. Map.prototype.set(key,value):set方法设置键名key对应的键值为value,然后返回整个 Map 结构。如果key已经有值,则键值会被更新,否则就新生成该键。
  2. Map.prototype.get(key):get方法读取key对应的键值,如果找不到key,返回undefined。
  3. Map.prototype.has(key):has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中。
  4. Map.prototype.delete(key):delete方法删除某个键,返回true。如果删除失败,返回false。
  5. Map.prototype.clear():clear方法清除所有成员,没有返回值。
const map = new Map([
     ['name','张三'],
     ['title','Author']
]);
map.size; // 2
map.has('name'); //true
map.get('name'); //张三

遍历方法:

  1. Map.prototype.keys():返回键名的遍历器。
  2. Map.prototype.values():返回键值的遍历器。
  3. Map.prototype.entries():返回所有成员的遍历器。
  4. Map.prototype.forEach():遍历 Map 的所有成员。
const map = new Map([
   ['F','no'],
   ['T','yes']
]);
for(let key of map.keys()){
   console.log(key);
}   //"F" "T"
for(let value of map.values()){
   console.log(value );
} //"no" "yes"
for(let item of map.entries()){
   console.log(item);
}
// ["F", "no"]
// ["T", "yes"]
map.forEach(function(value,key,map){
     console.log("key: %s,value: %s",key,value);
});
// key: F,value: no
// key: T,value: yes

WeakMap

只接受对象名作为键名(null除外),WeakMap键名所指对面不计入垃圾回收机制
使用场景:它键的引用对象在未来将会消失
WeakMap同样不能遍历
WeakMap的操作方法

  1. WeakMap.prototype.set(key,value):set方法设置键名key对应的键值为value,然后返回整个 WeakMap结构。如果key已经有值,则键值会被更新,否则就新生成该键。
  2. WeakMap.prototype.get(key):get方法读取key对应的键值,如果找不到key,返回undefined。
  3. WeakMap.prototype.has(key):has方法返回一个布尔值,表示某个键是否在当前 WeakMap对象之中。
  4. WeakMap.prototype.delete(key):delete方法删除某个键,返回true。如果删除失败,返回false。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值