比照Map 与 Object
键名
/**-------------------- Map --------------------*/Map键名能够是任何类型const map = new Map( [ [1, '111'], ['a', 'aaa'], [true, true], [{x: 1}, 'object'], [null, 'null'], [undefined, 'undefined'] ])/**------------------- Object ------------------*/Object键名只能是字符串 (Object会默认将键名转化为字符串格局)
创立
/**------------------- Map --------------------*/const map = new Map() // new 关键字创立/**------------------ Object ------------------*/const obj = new Object() // new 关键字创立const obj = {} // 间接赋值const obj = Object.create() // 应用create创立// 函数式创立function Person(name, age){ this.name = name; this.age = age;}const obj = new Person()
新增元素
/**-------------------- Map --------------------*/// 创立时塞入汇合整体const map = new Map( [ [1, '111'], ['a', 'aaa'], [true, true] ])// 链式设置const map = new Map() .set(1, '111') .set('a', 'aaa') .set(true, true) // set单个设置 const map = new Map()map.set(1, '111')map.set('a', 'aaa')map.set(true, true)/**-------------------- Object -------------------*/// 罕用赋值形式--> object.key / object[key]const obj = {}obj.a = 'aaaa'obj['1'] = 1111 // new关键字创立时塞入对象const obj = new Object( { 1: '111', a: 'aaa', true: true })// 间接赋值const obj = { 1: '111', a: 'aaa', true: true } // 应用create创立时塞入对象const obj = Object.create( { 1: '111', a: 'aaa', true: true })// 函数式创立时,this指定赋值function Person(name, age){ this.name = name; this.age = age;}const obj = new Person()
获取元素
/**-------------------- Map --------------------*/const map = new Map( [ [1, '111'], ['a', 'aaa'], [true, true] ])map.get(1) map.get('a')map.get(true) /**-------------------- Object -------------------*/const obj = { 1: '111', a: 'aaa', true: true }obj.a // object.keyobj[1] // object[key]
删除元素
/**-------------------- Map --------------------*/const map = new Map( [ [1, '111'], ['a', 'aaa'], [true, true] ])map.delete('a') // 单个删除map.clear() // 革除所有元素/**-------------------- Object -------------------*/let obj = { 1: '111', a: 'aaa', true: true }delete obj[true] // 单个删除obj = {} // 清空所有元素判断某个元素是否存在/**-------------------- Map --------------------*/const map = new Map( [ [1, '111'], ['a', 'aaa'], [true, true] ])map.has('a') // 返回布尔值/**-------------------- Object -------------------*/let obj = { 1: '111', a: 'aaa', true: true }// 返回undefined则不存在obj.aobj[1]长度/**-------------------- Map --------------------*/const map = new Map()map.size/**-------------------- Object -------------------*/const obj = new Object()Object.keys(obj).length
遍历办法
/**-------------------- Map --------------------*/const map = new Map( [ [1, '111'], ['a', 'aaa'], [true, true] ])// keysmap.keys() // { 1, 'a', true }// valuesmap.values() // { '111', 'aaa', true }// entriesmap.entries() // { [ 1, '111' ], [ 'a', 'aaa' ], [ true, true ] }// forEachmap.forEach( (value, key, map) => console.log(value, key, map))// 111 1 Map(3) { 1 => '111', 'a' => 'aaa', true => true }// aaa a Map(3) { 1 => '111', 'a' => 'aaa', true => true }// true true Map(3) { 1 => '111', 'a' => 'aaa', true => true }// for...of for (const [key, value] of map) { console.log(key, value) }// 1 111// a aaa// true true/**-------------------- Object -------------------*/// for...inconst obj = { 1: '111', a: 'aaa', true: true}for (const key in obj) { console.log(key)}// 1// a// true