在 JavaScript 中向 Map 添加键/值对的不同方法

Rez*_*eza 3 javascript object

根据 MDN set Method for Map,在 javascript 中向地图添加键/值对的唯一方法是set方法。我想知道当我们添加带有方括号的键/值对时,映射的行为是什么,如下所示;

const testMap = new Map();
testMap.set( 1,"firstValue" );
testMap[2] = "secondValue";
console.log( testMap );
console.log( testMap[ 2 ] );
console.log( testMap[ '2' ] );
Run Code Online (Sandbox Code Playgroud)

看来我们可以同时拥有地图和物体!有人可以向我解释一下吗?我知道 Map 是一种对象,但这种行为可能会导致很多错误。有什么办法可以防止这种情况发生吗?顺便说一句,如果您添加带有方括号的键/值对,则无法使用get方法检索它。

Men*_*los 6

这是一个特殊的情况。

映射是一种内部包含entries数组的特殊情况。当您使用数组表示法时,您在该entries数组之外设置键/值对。

当您使用setorget方法时,您实际上正在使用代码entries使用的内部数组map

在此输入图像描述

上面的示例本质上创建了一个使用内部entries数组的 Map 对象。但是,使用数组表示法设置第二个对象意味着您要添加另一个条目/属性,但不在 Entries 数组中。

而且,这些值完全不同。但请注意,这两种数据结构不会发生冲突。所以 testMap.get(2) 与 testMap[2] 不是同一个变量。