如果我定义如下内容:
var groups={
'group_one': ['red','green','blue'],
'group_two': ['yellow','black'],
'group_three': ['white', 'pink','purple','orange']
}
是正常的js 对象还是哈希表?如果它不是哈希表,那么Javascript 哈希表的外观如何?
我可以通过以下方式访问群组:
my_group=groups['group_two']
答案 0 :(得分:2)
这是一个对象,这就是specification引用它的方式。 对象是JavaScript中的数据类型。
hash table [Wikipedia]是数据结构,您可以使用它,但它不能很好地处理重复的键(它只是覆盖了条目)。您可以提供自己的实现,例如查看Hash Map implementation from the Google Closure Library。
答案 1 :(得分:1)
您的groups
变量指的是一个完全正常的对象,它与所有普通的javascript对象一样,是将属性名称映射到属性值的关联数组。这些通常作为哈希表实现。
答案 2 :(得分:0)
据我所知,JavaScript没有这样的哈希表。你有很好的旧的从零数字数组:
var a = ["foo", "bar"];
alert(a[0]); // "foo"
......你有对象:
var b = {
x: "foo",
y: "bar
};
alert(b.x); // "foo"
数组按键排序,不能有间隙。对象未排序。他们分享方括号语法:
alert(a[0]);
alert(b[x]); // same as b.x
我认为JavaScript引擎在内部大量使用哈希表,但JavaScript引擎通常不用JavaScript编写; - )
答案 3 :(得分:0)
如果您想要哈希表的典型功能,在那里提供密钥和数据,然后可以通过提供密钥来获取数据,那么javascript对象使用对象上的属性提供该功能。
javascript引擎的内部是一个属性查找算法,用于可能类似于哈希表的对象(尽管特定的实现并不重要,因为它具有适当的功能)。
该语言中没有单独的哈希表。一个可以实现,但很少有一点,因为对象通常提供所需的东西。
在您的数据中:
var groups= {
'group_one': ['red','green','blue'],
'group_two': ['yellow','black'],
'group_three': ['white', 'pink','purple','orange']
}
您可以使用以下方式访问数据:
groups.group_one
或
groups['group_one']
两者都将评估为:
['red','green','blue']