动态添加数据到javascript地图

ste*_*bot 57 javascript maps yui data-structures

有没有办法可以在javascript中动态地将数据添加到地图中.一个map.put(key,value)?我使用yui库为javascript,但没有看到任何支持这个.

Poi*_*nty 104

那么任何Javascript对象的功能都像一个"地图"

randomObject['hello'] = 'world';
Run Code Online (Sandbox Code Playgroud)

通常人们为此目的构建简单对象:

var myMap = {};

// ...

myMap[newKey] = newValue;
Run Code Online (Sandbox Code Playgroud)

编辑 - 具有明确的"放置"功能的问题是,你必须努力避免让函数本身看起来像地图的一部分.这不是一个真正的Javascripty事情.

2014年2月13日 -现代JavaScript有设施,用于创建不枚举对象的属性,这是很容易做到.但是,仍然存在这样一种情况,即"可放置"属性(可枚举与否)将声明属性名称"put"并使其不可用.也就是说,每个对象仍然只有一个命名空间.

  • @stevebot:他帖子中的最后一行不正是这样做的吗? (2认同)
  • @user3241111 地图没有“开始” (2认同)

Nia*_*lJG 34

Javascript现在有一个名为Map的特定内置对象,你可以调用如下:

   var myMap = new Map()
Run Code Online (Sandbox Code Playgroud)

您可以使用.set更新它:

   myMap.set("key0","value")
Run Code Online (Sandbox Code Playgroud)

这具有可用于处理查找的方法的优点,例如boolean .has

  myMap.has("key1"); // evaluates to false 
Run Code Online (Sandbox Code Playgroud)

您可以在调用Map对象上的.get之前使用它来处理查找不存在的键

  • 另外需要注意:`myMap ["key0"] ="value"`不是`myMap.set("key0","value")`的另一种语法,它"有效",但可能做的事情大多数都不是寻找. (3认同)
  • @Akavall,一个小时试图弄清楚为什么Map.delete不起作用以及为什么它的大小显示为0,即使控制台输出清楚地显示了其中的项目,我也意识到我已经像您提到的那样放入了项目。如您所说,它“有效”,但这不是您想要的。 (2认同)