es6数据结构Map键值对
admin
2024-05-23 21:11:32

文章目录

    • Map基本用法
    • Map遍历
    • Map和Object的区别
    • Map方法

Objects 和 Maps 类似的是,它们都允许你按键存取一个值、删除键、检测一个键是否绑定了值。因此(并且也没有其他内建的替代方式了)过去我们一直都把对象当成 Maps 使用。不过 Maps 和 Objects 有一些重要的区别。

JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。

Map基本用法

const map = new Map();map.set(1, 'aaa')
map.get(1) // "aaa"

如果 Map 的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map 将其视为一个键

let map = new Map();map.set(-0, 123);
map.get(+0) // 123map.set(true, 1);
map.set('true', 2);
map.get(true) // 1map.set(undefined, 3);
map.set(null, 4);
map.get(undefined) // 3map.set(NaN, 123);
map.get(NaN) // 123

Map遍历

const map = new Map([['F', 'no'],['T',  'yes'],
]);for (let key of map.keys()) {console.log(key);
}
// "F"
// "T"for (let value of map.values()) {console.log(value);
}
// "no"
// "yes"for (let item of map.entries()) {console.log(item[0], item[1]);
}

Map和Object的区别

  1. 一个Object的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值,包括函数、对象、基本类型。

  2. Map 中的键值是有序的,而添加到对象中的键则不是。因此,当对它进行遍历时,Map 对象是按插入的顺序返回键值。

  3. 你可以通过 size 属性直接获取一个 Map 的键值对个数,而 Object 的键值对个数只能手动计算。

  4. Map 可直接进行迭代,而 Object 的迭代需要先获取它的键数组,然后再进行迭代。

  5. Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。虽然 ES5 开始可以用 map = Object.create(null) 来创建一个没有原型的对象,但是这种用法不太常见。

  6. Map 在涉及频繁增删键值对的场景下会有些性能优势。

Map方法

方法名作用
Map.prototype.clear()删除所有键/值对来自Map对象
Map.prototype.delete(key)删除与该键关联的任何值,并返回Map.prototype.has(key)之前返回的值
Map.prototype.has(key)之后将返回true或false
Map.prototype.entries()返回一个新的Iterator对象,该对象包含一个 [key,value]数组,用于Map对象中的每个元素插入顺序
Map.prototype.forEach(callbackFn [,thisArg])按插入顺序为Map对象中的每个键值对调用 callbackFn 一次.如果向forEach提供thisArg参数,它将被用作每个回调的this值
Map.prototype.keys()按插入顺序返回一个新的Iterator对象,该对象包含Map对象中每个元素的键
Map.prototype.values()以插入顺序返回一个新的Iterator对象,该对象包含 [key,value]数组,用于Map对象中的每个元素

相关内容

热门资讯

谁说西北只有荒漠?青海海西为你... 本文转自:人民网-青海频道谁说西北只有荒漠?青海省海西蒙古族藏族自治州早就悄悄集齐了雪山、盐湖、草原...
旅行真谛:深度感受与融入,提前... 旅程并非仅仅是地理位置上的挪动,更是心灵跟自然之间的深度交谈,于探寻世界的进程当中,我们既可领会大自...
景区酒店的 “营收分水岭”:有... 在文旅消费升级的当下,景区酒店的竞争早已跳出 “住宿” 本质,转向 “体验型消费” 的较量。而伊贝莎...
保游网黄钦:以超1000款产品... 11月20日,深圳湾万丽酒店,2025选地接旅游资源交易展·深圳站在此举行,汇聚全球超100家新旅游...
游历:探寻世界与充实人生的渠道... 游历属于探寻世界的办法,同样是充实人生经历的渠道。由雄伟山川直至人文景致,每一处景致都负载着独有的故...