Map对象 和 Set对象
Map对象
new Map([a])
let arr = [
["a",1],
["b",2],
["c",3]
]
let m = new Map(arr);
object与map的比较
- 相同点
都允许你按键存取一个值、删除键、检测一个键是否绑定了值 - 不同点
- Object的键只能是字符串或者 Symbols Map 的键可以是任意值,包括函数、对象、基本类型
- Map 中的键值是有序的,而添加到对象中的键则不是 因此,当对它进行遍历时,Map 对象是按插入的顺序返回键值
- 可以通过 size
属性直接获取一个 Map 的键值对个数 Object的键值对个数只能手动计算 - Object有自己的原型,原型链上的键名可能和自己在对象上的设置的键名产生冲突
- Map 在涉及频繁增删键值对的场景下会有些性能优势
方法
- .size
对象的长度
let arr = [
["a",1],
["b",2],
["c",3]
]
let m = new Map(arr);
console.log(m.size)
- .clear( )
清空指定对象的内容,无返回值
m.clear();
console.log(m);
- .delete( )
删除指定的元素,自带返回值
参数:key 数据的key值
true || fasle 提示是否删除成功
console.log(m.delete("a"));
- .get(key)
通过key值 获取某一项的值
参数: key 数据的key值
带有返回值 key对应的value值
console.log(m.get("c"))
- .has(key)
是否包含某一项
参数:key 数据的key值
带有返回值 boolean类型 true || false
console.log(m.has("a"))
- .set(key,val)
参数:key 数据的key值
val 数据的val值
带有返回值map对象本身
console.log(m.set("d",2333))
Set对象
本质是一个函数
允许你存储任何类型的唯一值,无论是原始值或者是对象引用
Set( ) 可以接受 指定目标 来作为参数
和直接使用的区别: 达成去重的目的
let arr = [1,2,2,3,3,4,4,5];
let s = new Set(arr);
console.log(s);
作用:
用来构建某一个类型对象
通常我们把这类型的函数,叫做 构造函数
方法
- size 属性
console.log(s.size);
- clear() 方法 : 清除所有数据
-无参 无返回值
s.clear()
console.log(s);
- delete(): 删除指定的数据
参数: 指定的内容
返回值: true || false 是否删除成功(没有这个值的话,才会出现不成功)
console.log(s.delete(3));
- has(): 查找是否具有该元素
参数: 指定的内容
返回值: true || false 是否具有
console.log(s.has(3));
- add(): 添加数据
参数: 添加的内容
返回值: 添加后的整体内容
console.log(s.add("a").add("b"));