有没有办法在javascript中创建hashmap并像添加和删除值一样操作它
Posted
技术标签:
【中文标题】有没有办法在javascript中创建hashmap并像添加和删除值一样操作它【英文标题】:Is there a way to create hashmap in javascript and manipulate it like adding and deleting values 【发布时间】:2015-02-15 03:36:35 【问题描述】:我的要求是将键值对存储在数据结构中,并在必要时使用 javascript 中的键获取或删除这些对。
我怎样才能像在 Java 中一样在 JavaScript 中做到这一点?
我看到了一个创建哈希映射实例的答案,例如:
var hash=;
现在 Ie 可以在其中添加值,例如:
hash= "January":"1","Feb":"2"
我可以使用键动态插入值并获取它们并获取哈希映射的大小吗?
【问题讨论】:
这个 Java 怎么样? 你试过什么?您应该能够通过 Google 搜索“javascript 对象”或“javascript 地图”或“javascript 关联数组”并查看您需要的所有信息。 【参考方案1】:是的,这是一个关联数组 (var hash = new Object();
)
//You can add in these ways:
hash.January='1';
hash['Feb']='2';
//For length:
console.log(Object.keys(hash).length)
//To fetch by key:
console.log(hash['Feb']) // '2'
//To fetch all:
for(var key in hash)
console.log('key is :' + key + ' and value is : '+ hash[key])
【讨论】:
【参考方案2】:您可以使用内置的 Map 对象。
var myMap = new Map();
var keyObj = ;
myMap.set(keyObj, "value");
myMap.get(keyObj);
for (var [key, value] of myMap)
console.log(key + " = " + value);
更多信息在这里:https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Map
【讨论】:
英文链接给想要的人:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…【参考方案3】:hash["dynamic"] = 5
会插入一些东西。 Object.keys(hash).length
会得到大小。
【讨论】:
【参考方案4】:请参阅 JavaScript 对象指南: http://www.w3schools.com/js/js_objects.asp
可以通过多种方式访问 JavaScript 对象。我们以这个对象为例:
var person =
first_name: "John",
last_name: "Smith",
age: 39
;
如果您希望访问 first_name,您可以这样做:
person.first_name;
或者
person['first_name'];
这些都将检索值。
你也可以用类似的方式设置值:
person.first_name = "Michael";
现在,如果您指的是使用 Java 中的 keys() 方法创建迭代器,那么您不能完全做到这一点,但您可以做类似的事情。
您可以以与遍历数组类似的方式遍历对象:
for (var property in object)
if (object.hasOwnProperty(property))
// do stuff
还有一个较新的内置函数,您可以在其中使用 Object.keys(person) 获取对象键的数组。在这里阅读更多:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
我建议多使用谷歌。这类问题有很多资源。您会比其他人在这里回复更快地找到答案。
【讨论】:
如果您使用Object.create(null)
创建地图,则无需再使用object.hasOwnProperty()
。这将创建一个无原型的对象,因此除了您放入其中的内容之外,它不包含任何属性。我认为这是 ECMAScript 5 的新功能?【参考方案5】:
优雅简约javascript hashmap code
var hashMap=function()
this.hashDict=;//dictionary
this.size=0;
this.debug=true;
return this;
现在插入:
hashMap.prototype.put=function(_key,_value)
if (!this.hashDict.hasOwnProperty(_key))
this.hashDict[_key] = _value;
++this.size;
else if(this.debug)
throw 'duplicate keys not allowed. key : '+_key;
您还可以使用和执行所有其他操作来获取大小
您只需创建类哈希映射的对象,例如:
hashmap n = new hashMap();
n.put('key','value');
n.get('key');
n.size; // gives size
【讨论】:
以上是关于有没有办法在javascript中创建hashmap并像添加和删除值一样操作它的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在 SwiftUI 中创建 WKExtendedRuntimeSession 的新会话?