map与set

1.Set
本身为一个类似于数组构造函数,但set成员值是唯一的没有重复的值

const s=new set();
[2,3,5,4,5].forEach(x=>s.add(x));
for(let i for s){
console.log(i);
}
//2,3,5,4
set函数可以接收一个数组作为参数;
例
const set=new Set([1,2,3,4,5,5]};
[...set]
//[1,2,3,4,5]

Set内部判断两个值是否不同,使用算法类似于”=”与”=”主要区别是,向set加入值时认为NaN等于自身,而精确相等运算符“===”认为NaN不等于自身

set实例的属性与方法
Set.prototype.constructor构造函数,默认是set函数
Set.prototype.size返回set实例成员总数
Set操作方法
add(value):添加某个值,返回set结构本身;
delete(value);删除某个值,返回一个布尔值,表示删除是否成功。
clear()清除所有成员
has(value)返回一个布尔值,表示该值是否为set的成员;

s.add(1).add(2).add(2)
s.size//2
s.has(1)//true
s.delete(2);
s.has(2)//false

遍历操作
keys()返回键名
values();返回键值遍历器
entries();//返回键值对遍历器
forEach();//使用回调函数遍历每个成员

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

for(let item of set.values()){
console.log(item);
}
//red green

for(let item of set.entries()){
console.log(item);
}
//["red","red"]
//["green","green"]

set去重

var arr=[1,2,3,4,4]
var set=new Set(arr)
arr=[...set]
//[1,2,3,4]

二,Map
map结构提供了“值-值”对应,是种更完善的hash结构的实现

const m=new Map();
const b={p,"hello world"}
m.set(b,"content")
m.get(b)//content
m.delete(b)
m.has(b)//false

2若对一个键多次赋值,后面值覆盖前面值

const map=new Map();
map.set(1,'aaa').set(1,'bbb');
map.get(1)//'bbb'

3.若读取一个未知键,则返回undefined

new Map().get('abcd')//undefined

4,只有对同一个对象使用Map结构才将其视为同一个键

const map=new Map();
map.set(['a'],555);
map.get(['a'])//undfined
同理如下
const map=new Map();
const k1=['a'];
const k2=['a'];
map.set(k1,111).set(k2,222);
map.get(k1)//111
map.get(k2)//222

上述中,k1与k2值一样,但其在Map中被视为2个键,即Map键实际上是与内存地址绑定的
true与‘true’两个键
undefined与null俩个键
map中NaN等于NaN

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值