什么是javascript中的哈希?我怎样才能为数组使用哈希?

时间:2012-06-17 08:45:31

标签: javascript hash

我在我的对象原型中使用了一个数组,它基本上有添加,删除,附加到它的搜索功能。

像这样的东西

myobj = function() {
  this.Array_ = [];
}

myobj.prototype.add = function(item) {
  goog.array.insert(this.Array_, item);
}

myobj.prototype.hasItem = function(item) {
  goog.array.contains(this.Array_, item);
}

我的案例中的示例数组将列出整数。 [1,2,3,4]

但后来我了解到这是非常昂贵的,如果我使用哈希,可以节省成本。 有人可以用上面的例子解释哈希的使用。

1 个答案:

答案 0 :(得分:8)

“hash”这个词有很多含义,但在这种情况下,它可能是指通用的javascript对象,它们是内部的“哈希表”。对象具有内置的“添加”和“包含”功能:

foo = {}

foo['x'] = 1   // "add"
'x' in foo     // "contains"

但请注意,键总是转换为字符串,因此如果您需要其他类型的键(例如通用对象),则必须使用自定义函数,例如:

contains = function(ary, obj) {
    return ary.indexOf(obj) >= 0;
}

add = function(ary, obj) {
    if (!contains(ary, obj))
        ary.push(obj)
}