将数据动态添加到 javascript 地图
Posted
技术标签:
【中文标题】将数据动态添加到 javascript 地图【英文标题】:Dynamically add data to a javascript map 【发布时间】:2011-02-27 08:37:18 【问题描述】:有没有一种方法可以在 javascript 中动态地将数据添加到地图中。 map.put(key,value)
?我正在为 javascript 使用 yui 库,但没有看到任何支持这一点的东西。
【问题讨论】:
【参考方案1】:在打字稿中
let ar = [1, 2, 3, 4, 5, 6];
let map = new Map<number, string>();
ar.forEach(value =>
map.set(value, 'value'+ value);
);
console.log(map, 'map data');
【讨论】:
【参考方案2】:我喜欢这种方式来实现这一点
const M = new Map(Object.entries(
language: "JavaScript"
));
console.log(M.size); // 1
console.log(...M); // ["language", "JavaScript"]
// (1) Add and update some map entries
M.set("year", 1991);
M.set("language", "Python");
console.log(M.size); // 2
console.log(...M); // \["language", "Python"\] ["year", 1991]
【讨论】:
【参考方案3】:Javascript 现在有一个特定的内置对象称为 Map,您可以如下调用:
var myMap = new Map()
你可以用 .set 更新它:
myMap.set("key0","value")
这具有可用于处理查找的方法的优势,例如布尔值 .has
myMap.has("key1"); // evaluates to false
您可以在调用 Map 对象上的 .get 之前使用它来处理查找不存在的键
【讨论】:
附加说明:myMap["key0"] = "value"
不是 myMap.set("key0","value")
的替代语法,它“有效”,但可能是大多数人不希望的。
@Akavall,一小时试图弄清楚为什么 Map.delete 不起作用以及为什么它的大小显示为 0 即使控制台输出清楚地显示项目在那里,我意识到我把就像你提到的那样。正如你所说,它“有效”,但这不是你想要的。
这是 javascript 中的正确地图对象。请投票【参考方案4】:
任何 Javascript 对象的功能都类似于“地图”
randomObject['hello'] = 'world';
通常人们会为此目的构建简单的对象:
var myMap = ;
// ...
myMap[newKey] = newValue;
edit — 使用显式“放置”函数的问题在于,您必须费尽心思避免让函数本身看起来像地图的一部分。这不是真正的 Javascripty 事情。
2014 年 2 月 13 日 — 现代 JavaScript 有 facilities 用于创建不可枚举的对象属性,而且很容易做到。但是,“put”属性(无论是否可枚举)仍然会声明属性名称“put”并使其不可用。也就是说,每个对象仍然只有一个命名空间。
【讨论】:
对,我的意思是一个javascript“地图”。你将如何构建一个 myMap.put() 函数? @stevebot:他帖子的最后一行不正是这样做的吗? 好的,我听到了。我可以做 myMap[anyKey] = anyValue 这对我有用。谢谢! 如何在地图的开头放置/添加? @user3241111 地图没有“起点”以上是关于将数据动态添加到 javascript 地图的主要内容,如果未能解决你的问题,请参考以下文章
将javascript创建的复选框传递给控制器 以保存到表格?
将 Google“我的地图”图层添加到 Google Maps Javascript API