JS中Map对象的使用

这篇具有很好参考价值的文章主要介绍了JS中Map对象的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值) 都可以作为一个键或一个值。

JS中的Object类型实际上是一种键值对映射(key-value pairs),但是JS中这种键值对映射有点问题:key只能为string类型。为了和其他编程语言有相似的数据结构(如Map, Dict等),ES6中新增了Map类型。

属性与方法

size:是可访问属性,用于返回 一个Map 对象的成员数量。

Map():构造方法。

clear():移除Map对象中的所有元素。

delete(key):移除 Map 对象中指定的元素;如果 Map 对象中存在该元素,则移除它并返回 true;否则如果该元素不存在则返回 false。

entries():返回一个新的包含 [key, value] 对的 Iterator 对象,返回的迭代器的迭代顺序与 Map 对象的插入顺序相同。

keys():返回一个引用的 Iterator 对象。它包含按照顺序插入 Map 对象中每个元素的key值。

values():返回一个新的Iterator对象。它包含按顺序插入Map对象中每个元素的value值。

forEach():按照插入顺序依次对 Map 中每个键/值对执行一次给定的函数。

get():返回某个 Map 对象中的一个指定元素。

set(key, value):为 Map 对象添加或更新一个指定了键(key)和值(value)的(新)键值对。

has():返回一个bool值,用来表明map 中是否存在指定元素.

Map 对象遍历

let map = new Map()

// forEach
map.forEach((value, key, map) => {
    console.log(map.get(key) === value)
})

// for..of

for (const key of map.keys()) {
    console.log(key);
}

for (const value of map.values()) {
    console.log(value);
}

for (const [key, value] of map.entries()) {
    console.log(key, value);
}

Map 与数组的关系


const kvArray  = [["key1", "value1"], ["key2", "value2"]];

// 将二维键值对数组转换成一个Map对象
let map = new Map(kvArray)

console.log(Array.from(map))   // 输出 [[key, value], ...] 数组

console.log([...map]);    // 输出 [[key, value], ...] 数组

console.log(Array.from(map.keys()));   // 输出 ["key1", "key2", ...] key 数组

console.log([...map.keys()]);   // 输出 ["key1", "key2", ...] key 数组

console.log(Array.from(map.values()));  // 输出 ["value1", "value2", ...] key 数组

console.log([...map.values()]);  // 输出 ["value1", "value2", ...] key 数组

Map 和 Object 的区别

Map Object
默认值             默认不包含任何值,只包含显式插入的键 一个 Object 有一个原型,原型上的键名有可能和自己对象上设置的键名冲突
类型 任意 String 或 Symbol
长度 键值对个数通过 size 属性获取 键值对个数只能手动计算
性能 频繁增删键值对的场景下表现更好 频繁添加和删除键值对的场景下未作出优化

问题记录

如果Map的值是对象或者数组,可以直接修改生效,不需要再调用 map.set(),如:文章来源地址https://www.toymoban.com/news/detail-485723.html

// array or object
const map = new Map()

map.set('cc', [1])

const value = map.get('cc')

value.push(2)

console.log(map.get('cc'))  // [1, 2]

到了这里,关于JS中Map对象的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • js在数组对象中添加和删除键值对(对象属性)的方法

    添加 1.Object.assign():用法-Object.assign(源对象, {要添加的键值对}) 2.拓展运算符(...):用于取出参数对象所有可遍历属性然后拷贝到当前对象 3.object[key] = value:直接给新的key赋值 删除 1.将属性设置为 undefined:属性本身仍将存在于对象中,它还会改变原始对象。 2.使用 delete 操

    2024年02月14日
    浏览(52)
  • js遍历map(js遍历map对象)

    var map = new HashMap(); map.put(a,1); map.put(b,2); 遍历: var key = map.keySet(); for (var i in key){  alert(map.get(key[i])); } 注:js 中使用map,要先导入一个HashMap.js文件  没要求,引入这个文件之后,可以直接使用hashmap了var map = {\\\'a\\\': \\\'aaaaa\\\',\\\'b\\\': \\\'bbbbb\\\'};for(var k in map){alert(map[k]);}可以使用

    2023年04月26日
    浏览(40)
  • 【高阶数据结构】map和set的介绍和使用 {关联式容器;键值对;map和set;multimap和multiset;OJ练习}

    关联式容器和序列式容器是C++ STL中的两种不同类型的容器。 关联式容器是基于键值对的容器 ,其中每个元素都有一个唯一的键值,可以通过键值来访问元素。关联式容器包括set、multiset、map和multimap。 序列式容器是基于元素序列的容器 ,其中元素按照一定的顺序排列,可以

    2024年02月11日
    浏览(40)
  • javaScript中对象使用遍历渲染键值对取值,Vue的{{}}中写方法获取值。

     类似于这样的数据有若干条,我们希望展示的方式为 我的朋友:         陪我同眠的床伴【熊猫:花花,狗熊:阿壮】 此时在代码中的应该如果来写? {{ item[Object.keys(item)[0]] }} 会显示数组元素的值,而 (Object.keys(item)[0]) 会显示数组元素的键。 i tem[Object.keys(item)[0]]会根

    2024年01月17日
    浏览(34)
  • C++-map:获取map中value最大值、最小值对应的键值对

    简述:通过调用 max_element 函数,给定其特定的比较方式,将会获得在给定比较方式下得结果.上述代码中,给定的比较方式是根据 value 值进行比较, 相当于重构了 号.将返回最大值 . 使用匿名函数重构: 打印结果: C++获取map中value最大最小值对应的键值对_普通网友的博客-CSDN博客

    2024年02月16日
    浏览(45)
  • 前端js 数据结构:对象 object、数组Array 、Map 的创建、增删改 / 遍历数据

    对象:由一组键值对组成的无序集合,可以通过键来获取对应的值。 每个键值对中的键是唯一的,值可以是任意类型的数据。 对象通常用来表示实体的属性和方法。 1.1.1 对象字面量(最常用): {} 对象字面量:通过在大括号 {} 中定义对象的属性和方法来创建对象。 这是最简单

    2024年01月21日
    浏览(52)
  • C++ 使用 GDI+ 实现格式为bmp的图像内存转为jpg格式,并且可以实现旋转保存

    将获取的bmp内存数据,经过转换成jpg格式,根据自己的需求可以对图像先做旋转,再进行保存,主要用到的是GDI+工具。 函数的说明 /// /获取的图像内存数据 /// /图像的像素位数 /// /图像的宽度 /// /图像的高度 /// /图像保存的路径 /// /图像保存的路径加图像名称 ///

    2024年02月16日
    浏览(42)
  • 高级编程JavaScript中的Map键值对你知道吗?一篇文章看懂

    Map 保存键值对,其中键可以是任何数据类型。 Map 会记住键的原始插入顺序。 Map 提供表示映射大小的属性。 方法 描述 new Map() 创建新的 Map 对象。 set() 为 Map 中的键设置值。 get() 获取 Map 对象中键的值。 clear() 从 Map 中移除所有元素。 delete() 删除由某个键指定的 Map 元素。

    2024年01月25日
    浏览(47)
  • C++之map的emplace与pair插入键值对用例(一百七十四)

    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏: Audio工程师进阶系列 【 原创干货持续更新中…… 】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:An

    2024年02月12日
    浏览(43)
  • Python中使用Pickle来保存对象和重载对象

    对象的序列化是将对象转换为比特形式的方法,这样我们就可以在硬盘上保存对象的状态。尽管许多语言都为我们提供了对象序列化的方式,但Python在所有的语言中更加灵活。 在Python中,对象序列化被称为pickling,而去序列化被称为unpickling。我们在 Python 中大多使用对象。因

    2024年02月10日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包