一、对象的方式来存储键值对缺点就是
1.1、键名限制
键名只能是字符串或者符号
,这就给它的使用带来很大的限制
1.2、获取属性的数量不便
如果想知道对象中存了多少个属性,就必须先拿到所有的键名,然后通过求数组的长度才能知道对象中有多少个属性。
1.3、键名冲突
键名容易跟原型上的名称冲突。
二、map的创建
2.1、创建一个没有任何内容的 map 集合
const map = new Map()
2.2、创建一个有初始内容的 map 集合
传递一个数组,数组中又包含着多个子数组,子数组中元素个数始终为2,第一个元素为键名,第二个元素为值。
const map = new Map([['a', 1], ['b', 2], ['c', 3]])
三、map的方法
3.1、set()
如果键不存在,则添加一项
如果键存在,则修改它的值
如果键值都是一个空对象{},则不会被覆盖(对象是引用值,它们的地址不同,所以不会覆盖)
const map = new Map()
map.set('a',1)
3.2、get方法
get(键):根据一个键,得到一个值
如果传入不存在的值,则返回undifined
const map = new Map()
map.set('a', 1)
map.get('a') // 1
3.3、has(键):判断某个键是否存在
返回值 布尔 有返回true,没有返回false
const map = new Map()
map.set('a', 1)
map.has('a') //true
3.4、delete(键)
删除指定的键,成功返回true,失败返回false
const map = new Map()
map.set('a', 1)
map.delete('a') //true
3.5、clear()
清空 map
const map = new Map()
map.set('a', 1)
map.clear() //true
四、属性
4.1、size
获取map中的属性数量
const map = new Map()
map.set('a', 1)
map.size() //1
五、常用
5.1、将map对象的value转成一个数组
const map = new Map()
map.set('a', 1)
map.set('b', 2)
let arr = []
for (let [key, value] of map) {
console.log(key, value);
arr.push(value)
}
map使用forEach
const map = new Map()
map.set('a', 1)
map.set('b', 2)
map.forEach((value, key, map) => {
console.log(value, key, map);
})
网友评论