什么是javascript中的哈希?我如何在数组中使用哈希?

4
我在对象原型中使用了一个数组,该数组基本上附带了添加、删除、搜索函数。
类似于这样:
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
可能是JavaScript中的哈希表的重复问题。 - Sarfraz
这听起来像是你正在使用它就像你可能使用一个集合一样 - Asherah
@Sarfraz解决了我的问题,谢谢。 - RaviTeja
1个回答

8

“哈希”一词有许多含义,但在这种情况下,它可能是指通用的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)
}

“无法在哈希表中存储对象”是指“无法将对象作为键存储在哈希表中”? - Jon Onstott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接