有没有办法在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并像添加和删除值一样操作它的主要内容,如果未能解决你的问题,请参考以下文章

在javascript对象中创建“静态”成员[重复]

有没有办法在 SwiftUI 中创建 WKExtendedRuntimeSession 的新会话?

有没有办法从 Flow 中创建 StateFlow

有没有办法在 Android 中创建 stackoverfow“标签”EditText/Input 字段?

有没有办法在 WPF 中创建一个粘性页脚?

有没有办法在 SwiftUI 中创建一个新的手势?