我需要使用JavaScript存储一些统计信息,就像我在C#中这样做:
Dictionary<string, int> statistics;
statistics["Foo"] = 10;
statistics["Goo"] = statistics["Goo"] + 1;
statistics.Add("Zoo", 1);
在JavaScript中是否有 Hashtable
或 Dictionary<TKey, TValue>
之类的内容?
我怎么能以这种方式存储 Value ?
11 回答
使用JavaScript objects as associative arrays .
用 . 创建一个对象
另一种语法是:
如果还可以使用以下语法创建值对象映射的键
如果您来自面向对象语言,则应检查this article .
除非您有特殊原因,否则只需使用普通对象即可 . 可以使用散列表样式语法引用Javascript中的对象属性:
现在可以将
foo
和bar
元素引用为:当然这意味着你的密钥必须是字符串 . 如果它们不是字符串,它们会在内部转换为字符串,因此它仍然有效,YMMV .
所有现代浏览器都支持javascript Map对象 . 使用Map优于Object的原因有两个:
例:
如果希望对未从其他对象引用的键进行垃圾回收,请考虑使用WeakMap而不是Map .
由于JS中的每个对象都表现得像 - 并且通常被实现为 - 一个哈希表,我只需要...
所以在C#代码看起来像:
要么
在JavaScript中
C#dictionary对象包含有用的方法,如JavaScript中的
dictionary.ContainsKey()
,我们可以使用hasOwnProperty
之类的如果你需要你的键是任何对象而不是字符串,那么你可以使用我的jshashtable .
我创建它来实现一些问题,例如对象键映射,枚举能力(使用
forEach()
方法)和清除 .类Hashtable的文档
方法:
get(key)
返回与指定键关联的值 .
Parameters:
key
:从中检索值的键 .put(key, value)
将指定的值与指定的键关联 .
Parameters:
key
:关联值的关键字 .value
:与密钥关联的值 .remove(key)
删除指定的键及其值 .
Parameters:
key
:要删除的密钥 .clear()
清除所有哈希表,删除键和值 .
indexOfKey(key)
根据添加顺序返回指定键的索引 .
Parameters:
key
:获取索引的关键 .indexOfValue(value)
根据添加顺序返回指定值的索引 .
Parameters:
value
:获取索引的值 .Notes:
此信息由数组的
indexOf()
方法检索,因此它仅使用toString()
方法比较对象 .entryAt(index)
返回具有两个属性的对象:key和value,表示指定索引处的条目 .
Parameters:
index
:要获取的条目的索引 .containsKey(key)
返回哈希表是否包含指定的键 .
Parameters:
key
:检查的关键 .containsValue(value)
返回哈希表是否包含指定的值 .
Parameters:
value
:要检查的值 .forEach(iterator)
迭代指定的
iterator
中的所有条目 .Parameters:
value
:具有3个参数的方法:key
,_1044953_和index
,其中index
表示条目的索引 .属性:
length
(只读)获取哈希表中条目的计数 .
keys
(只读)获取哈希表中所有键的数组 .
values
(只读)获取哈希表中所有值的数组 .
entries
(只读)获取哈希表中所有条目的数组 . 它们以与方法
entryAt()
相同的形式表示 .https://gist.github.com/alexhawkins/f6329420f40e5cafa0a4
您可以使用以下内容创建一个: