js map遍历 修改对象里面的值_JavaScript Map对象

JavaScript Map对象

Map

Map是一组键值对的结构,用于解决以往不能用对象做为键的问题

具有极快的查找速度

函数、对象、基本类型都可以作为键或值

其实Map和对象非常相似,但是对象的键只能是String类型或Symbol类型,Map在这方面就显得自由开放,以下是Map与对象的对比。

MapObject

意外的键

Map默认情况不包含任何键。只包含显式插入的键。

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

键的类型

一个 Map的键可以是任意值,包括函数、对象或任意基本类型。

一个Object

键的顺序

Map中的 key 是有序的。因此,当迭代的时候,一个 Map对象以插入的顺序返回键值。

一个 Object的键是无序的注意:自ECMAScript 2015规范以来,对象确实保留了字符串和Symbol键的创建顺序; 因此,在只有字符串键的对象上进行迭代将按插入顺序产生键。

Size

Map的键值对个数可以轻易地通过size属性获取

Object的键值对个数只能手动计算

迭代

Map是 iterable的,所以可以直接被迭代。

迭代一个Object需要以某种方式获取它的键然后才能迭代。

性能

在频繁增删键值对的场景下表现更好。

在频繁添加和删除键值对的场景下未作出优化。

声明定义

使用Map()加上数组嵌套即可声明出一个Map容器。

"use strict";

let map= new Map([["k1", "v1"], ["k2", "v2"], ["k3", "v3"]]);

console.log(mapinstanceof Map); //true

console.log(map);//Map(3) {"k1" => "v1", "k2" => "v2", "k3" => "v3"}

对于键是对象的Map, 键保存的是内存地址,值相同但内存地址不同的视为两个键。这个时候是不会引发值冲突的问题,如果是相同内存地址的对象则会引发值冲突。

"use strict";

let arr= ["云崖"]; //一个arr设置为了两个不同的键,这会引发值冲

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值