JavaScript中的Map()方法

117 阅读2分钟

Map的定义及解决的问题

  • Map是一组键值对组合的数据集合,其本质是可以将一些信息(),关联到对象上(),而不需要讲这个信息放入对象本身.
  • 解决问题: Map解决了对象中的key(键)必须是string类型的问题. 在Map中键可以是数组Array,对象Object,Number, 函数function等.
  • Map还有一个优点就是它具有很快的查询速度
  • 定义: new Map()
var m = new Map()
var x = {false: 1}
var y = {id: 2}
m.set(x, 'test') 
console.log(m); //=> Map(1) { { false: 1 } => 'test' }
let a = Object.keys(x)
let b = m.get(x)
console.log(a); //=> [ 'false' ]
console.log(b); //=> test

Map对象的操作方法

  • Map方法形成的对象不能用[]来获取和设置值,用了get和set进行替代
  • get
    • get()可以用来获取值
    • 用法: object.get(键名)
  • set
    • set()是用来给map添加元素的,可以设置值
    • 用法: object.set(键名, '值')
  • delete
    • delete()方法是用来删除map数据结构中的一个元素
    • 用法: object.delete()
  • size
    • size属性可以获取map的长度
    • 用法: object.size
  • has
    • has方法可以用来检测map中元素是否存在
    • 用法: object.has(检测元素的键). 返回值是Boolean类型
  • clear
    • clear: 可以用来清除map中的所有内容
    • 用法: object.clear()
  • 使用代码见下
let map = new Map()
let x = {name: 'String'}
let y = [1,2,3,4]
let z = function() {
    console.log('test');
}
// x和y作为键,下面通过set设置他们的值
map.set(x, '名字')
map.set(y, '我是数组')
// 这是设置好的map
console.log(map); //=> Map(2) { { name: 'String' } => '名字', [ 1, 2, 3, 4 ] => '我是数组' }
// 接下来通过get获取值
let getX = map.get(x)
let getY = map.get(y)
console.log(getX); //=> 名字
console.log(getY); //=> 我是数组
// delete()方法: 删除里面的一个元素
map.set(z, '我是方法') 
/*
    设置完z后的打印
    Map(3) {
      { name: 'String' } => '名字',
      [ 1, 2, 3, 4 ] => '我是数组',
      [Function: z] => '我是方法'
    }
*/
console.log(map);
console.log(map.get(z)); //=> 我是方法
map.delete(z)
console.log(map); //=> Map(2) { { name: 'String' } => '名字', [ 1, 2, 3, 4 ] => '我是数组' }
// 通过size属性获取map长度
console.log(map.size); //=> 2
// has方法检测属性是否存在
console.log(map.size); //=> 
console.log(map.has(x)); // true
console.log(map.has(z)); // false
// 通过clear方法对map内容进行清除
let clearMap = map.clear()
console.log(clearMap); //=> undefined
console.log(map.size); //=> 0
console.log(map.has(x)); // false