对象属性作为散列函数中的键值对

时间:2014-05-13 15:08:03

标签: javascript arrays object hash hashtable

我对Javascript有一个基本的问题。

因为Javascript没有哈希表对象,但我意识到我可以构建一个对象,将其用作哈希表,如下所示:

var hashtable = {
    Today : {"I", "feel", "good"},
    Tomorrow : {'is', 'another', 'day'},
    Yesterday : 'alwaysGood'
}

我在互联网上搜索了很多,有一些方法使用了associativeArray或者将自己的对象构建为哈希表,上面的本机对象构建方法是不是很好?

1 个答案:

答案 0 :(得分:2)

由于此{"I", "feel", "good"},您的代码示例无效JavaScript。在此上下文中,花括号表示对象文字,并且必须为每个对象的属性分配值。

有效版本如下:

var hashtable = {
    Today : ["I", "feel", "good"],
    Tomorrow : ['is', 'another', 'day'],
    Yesterday : 'alwaysGood'
}

请注意使用创建数组的[]。 JavaScript中的数组是数字键控的,没有像其他语言那样的关联数组的概念。但是,JavaScript数组本身也是一个对象,因此您可以自由添加属性:

var arr = [];
arr.Today = 'some value';

为避免在示例中使用数组,您需要为所有属性设置值:

var hashtable = {
    Today : {"I" : "i val", "feel" : "feel val", "good" : "good val"},
    Tomorrow : {'is' : 'is val', 'another' : 'another val', 'day' : 'day val'},
    Yesterday : 'alwaysGood'
}

以这种方式使用对象是有效且可接受的。有关更多信息,请参阅Working With Objects (MDN)