ES6的MAP 和 TS的eumn 和 Object区别及使用
map基础用法设置,获取,遍历
const mapObj = new Map([[1,'red'],['name','张三']]) // 二维数组
mapObj.set(2,'yellow') //可以通过set添加元素
mapObj.get(2) //yellow
----遍历---
mapObj.keys() // 1, 'name', 2
----Map转数组---
[...mapObj] // [[1,'red'],['name','张三'],[2,'yellow']]
---数组转Map
let arr = [[1,'red'],['name','张三'],[2,'yellow']]
new Map(arr)
Map和对象互相转换,Map和Json互相转换详见官网
map自带的方法
mapObj.set()添加一个新建元素到映射mapObj.get()返回映射中指定的元素mapObj.has()如果映射包含指定元素,则返回truemapObj.clear()从映射中移除所有元素mapObj.delete()从映射中移除指定元素mapObj.toString()返回映射字符串形式mapObj.valueOf()返回指定对象的原始值mapObj.keys():返回键名的遍历器。mapObj.values():返回键值的遍历器。mapObj.entries():返回所有成员的遍历器。mapObj.forEach():遍历 Map 的所有成员。
参考文档:www.bookstack.cn/read/es6-3r…
enum的简单实用-设置,取值
------定义------
const enum STATUS {
1 = '登录',
2 = '注册'
} // 当前为字符串枚举
-----使用----
STATUS[1] // 登录
STATUS['登录'] // 1 可以反向映射到属性
项目中建议使用中文的字符串枚举。
参考地址:www.tslang.cn/docs/handbo…
object对象
const status = {
'1' : '登录',
'2' : '注册'
}
status['1'] // '登录'
map,object,enum的区别,及各自的使用场景
enum对比object:
- object灵活性较差,只能通过属性获取值,枚举可以双向获取(反向映射-通过值找到对应的属性)
- 枚举类型定义之后,不可以被修改
- eumn编译之后是个对象
map对比object
- Object的键只能是字符串或者Symbol,Map的键值可以是任意值
- Map的键值对数量可以通过size属性获取,
Object则需要通过Object.keys(obj).length类似的方式获取 Map的键值是有序的,数据的排序是根据用户push的顺序进行排序的, 而Object实例中key,value的顺序就是有些规律了, (他们会先排数字开头的key值,然后才是字符串开头的key值);