Map和Set

作者: monkeyfly36 | 来源:发表于2020-05-27 19:35 被阅读0次

[图片上传中...(image.png-24fde2-1590629267229-0)]

Map本质上是键值对的集合(Hash 结构)。
原因:传统对象只能用字符串当作键,这给它的使用带来了很大的限制。ES6 Map“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。

Map实例的属性和操作方法(6):
size:返回成员总数
set(key, value):添加新的键值
get(key):读取键对应的值
has(key):是否有某个键
delete(key):删除某个键
clear():清空

Map实例的遍历方法(4):
keys():返回键名的遍历器。
values():返回键值的遍历器。
entries():返回键值对的遍历器。
forEach()/for(let [key, value] of newMap):遍历 Map 的所有成员

初始化--两种

1.var hashMap = new Map()
hashMap.set('a',1)
hashMap.set('b',2)

2.var hashMap = new Map([
['a',1],['b',2]
])

应用
数组去重
找到数组中重复的数
找到数组中第一个非重复的数

// 数组去重
function arrayNonRepeatfy(arr) {
  let hashMap = new Map()
  let result = []  // 数组用于返回结果
  for (let i = 0; i < arr.length; i++) {
    if(hashMap.has(arr[i])) { // 判断 hashMap 中是否已有该 key 值
      hashMap.set(arr[i], true) // 后面的true 代表该 key 值在原始数组中重复了,false反之
    } else {  // 如果 hashMap 中没有该 key 值,添加
      hashMap.set(arr[i], false)
      result.push(arr[i]);
    }
  } 
  return result 
}
// 找到数组中重复的数
function findRepeatNumInArray(arr) {
  let hashMap = new Map()
  let result = new Array()
  for (let i = 0; i < arr.length; i++) {
    hashMap.set(arr[i], hashMap.has(arr[i]))
  }
  // 得到 hashMap 后,对其进行遍历,值为 true,对应的键就是重复的数
  for(let [key, value] of hashMap.entries()) { 
    if(value === true) {
      result.push(key)
    }
  }
  return result
}
// 找到数组中第一个非重复的数
function findFirstNonRepeat(arr) {
  let hashMap = new Map()
  for (let i = 0; i < arr.length; i++) {
    hashMap.set(arr[i], hashMap.has(arr[i]))
  }
  // 找到第一个值为 false 的,就代表第一个非重复数,return 就好了
  for(let [key, value] of hashMap.entries()) {
    if(value === false) {
      return key
    }
  }
  return "全部重复"
}

相关文章

  • ES6

    Symbol Set和Map Set Map Proxy get() set() apply() Reflect ...

  • Java Map,List,Set,String[]之间的转换

    Map和List map.values转list: Map和set map转set(主要用于迭代遍历) set转m...

  • Map 、Set&Object、Array

    1. Map和Set是什么? 2. Map和Set与Object和Array有什么区别,为何引入Map和Set? ...

  • 面试题解答

    Set 和Map 的方法 Set sizeaddforeachhasdeleteclear Map gethass...

  • java开发工程常用的数据结构(集合)

    List Map Set list,set,map对比 总结: Vector和ArrayList vector是线...

  • ES6新增Map和Set数据类型

    Map和Set Map 和 Set 是 ES6 标准新增的数据类型 Map JavaScript的对象(Objec...

  • Map和Set

    Map:一组键值对的结构,具有极快查找速度有has(判断是否有该键值对)get(得到对应键值)set(设置键值对)...

  • Set和Map

    Set和Map Set实例属性Set.prototype.constructor 构造函数,默认SetSet.pr...

  • Set和Map

  • Map和Set

    Map Map是一组键值对的结构,具有极快的查找速度。 初始化Map方法: 一个key只能对应一个value,所以...

网友评论

      本文标题:Map和Set

      本文链接:https://www.haomeiwen.com/subject/airgahtx.html