new Map()的详细介绍与用法
·
说明:
JavaScript的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。
为了解决这个问题,ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
定义: 键/值对的集合
1、let mapObj = new Map();
2、let mapObj = new Map([[key,value],[key,value]]); //默认带初始化参数的定义
如果Map的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map将其视为一个键,包括0和-0。另外,虽然NaN不严格相等于自身,但Map将其视为同一个键。
属性及方法:
(1)size属性
size属性返回Map结构的成员总数
let obj = new Map([['name', '张三'], ['age', 18], ['sex', '男']])
obj.size //3
(2)set(key,value)
set方法设置key所对应的键值,然后返回整个Map结构。如果key已经有值,则键值会被更新,否则就新生成该键。
// 常用写法
let obj = new Map()
obj.set("age", 20) // 键是字符串
obj.set(0, "attack_type") // 键是数值
obj.set(undefined, "definition") // 键是undefined
//set方法返回的是Map本身,也可以采用链式写法。
let map = new Map()
.set(1, 'a')
.set(2, 'b')
(3)get(key)
get方法读取key对应的键值,如果找不到key,返回undefined。
let obj = new Map()
obj.set("hello", 'Hello ES6!')
obj.get('hello') // Hello ES6!
obj.get('word') // undefined
(4)has(key)
has方法返回一个布尔值,表示某个键是否在Map数据结构中。
let obj = new Map()
obj.set("hello", 'Hello ES6!')
obj.has('hello') // true
obj.has('word') // false
(5)delete(key)
delete方法删除某个键,返回true。如果删除失败,返回false。
let obj = new Map()
obj.set("hello", 'Hello ES6!')
obj.has('hello') // true
obj.delete('hello')
obj.has('hello') // false
(6)clear()
clear方法清除所有成员,没有返回值。
let obj = new Map()
obj.set("hello", 'Hello ES6!')
obj.size // 1
obj.clear()
obj.size // 0
(7)遍历方法:
keys()、values()、entries()、forEach()
对映射中的每个元素执行指定操作
(8)toString
返回映射的字符串表示形式
(9)valueOf
返回指定对象的原始值
总结:在开发过程中,涉及到数据结构,能使用Map 不使用Array 尤其是复杂的数据结构 ,如果对于数组的存储考虑唯一性 使用Set ,优先使用map。
更多推荐
已为社区贡献1条内容
所有评论(0)