1. Map数据结构类似于对象,是键值对的集合,传统的键只能用字符串,Map的键不限于字符串,各种类型的值(包括对象)都可以当做键。
  2. Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值) 都可以作为一个键或一个值,当有重复的keynewValue插入时,会覆盖前面key对应的oldValue

创建一个Map对象

  1. const map = new Map()

设置map对象的值

  1. const map = new Map()
  2. map.set('name',"html")
  3. map.set('id',1001)
  4. console.log(map)

size属性

  1. // 返回Map结构的成员总数
  2. const map = new Map()
  3. map.set('name',"html")
  4. map.set('id',1001)
  5. console.log(map.size)

根据key获取对应的value

  1. console.log(map.get("name")) // html

查找Map对象是否具有某key

  1. console.log(map.has('name')); // true

删除某key-value

  1. map.delete('id')
  2. /*
  3. map.delete("key1") // true 删除成功
  4. map.delete("key4") // false 不存在key="key4"
  5. */

清除成员 clear

  1. // 将这个map中的所有元素删除
  2. map.clear()

使用for…of遍历

  1. for(let [key,value] of map){
  2. console.log(key,value)
  3. }
  4. for(let key of map.keys()){
  5. console.log(key)
  6. }
  7. for(let value of map.values()){
  8. console.log(values)
  9. }

使用forEach方法遍历

  1. // forEach (第一个参数为value,第二个为key)
  2. map.forEach((value,key)=>{
  3. console.log(key,value)
  4. })

entries( )

  1. entries()方法 返回键值对的遍历器
  2. 返回一个新的包含 [key, value]的 Iterator对象,返回的迭代器的迭代顺序与 Map对象的插入顺序相同。
  3. 注意:
  1. let map = new Map()
  2. map.set('age',4)
  3. let objKey = {p:'antzone'}
  4. map.set(objKey,'蚂蚁部落')
  5. for(const item of map.entries()){
  6. console.log(item) // ['age',4] [{p:'antzone'},'蚂蚁部落']
  7. }

练习— 数组去重

  1. const nums =[2,7,11,2,15]
  2. const map = new Map()
  3. nums.forEach((value,index)=>{
  4. map.set(value,index)
  5. })
  6. // 使用Array.from()将伪数组转化为数组
  7. const arr = Array.from(map.keys())
  8. console.log(arr); // [2,7,11,15]