4

I'm using an array in my object prototype which basically has add, remove, search functions attached to it.

Something like this

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);
}

And a sample Array in my case would list of integers. [1, 2, 3, 4]

But later I learnt that this is very costly and can be cost saving if I use hash. Can someone explain use of hash with the above example.

BenMorel
  • 34,448
  • 50
  • 182
  • 322
RaviTeja
  • 988
  • 3
  • 13
  • 20

1 Answers1

8

The word "hash" has many meanings, but in this case it probably refers to generic javascript Objects, which are "hashtables" internally. Objects have "add" and "contains" functionality built-in:

foo = {}

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

Do note, however, that keys are always converted to strings, therefore if you want keys of other types (e.g. generic objects), you'll have to use custom functions, for example:

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

add = function(ary, obj) {
    if (!contains(ary, obj))
        ary.push(obj)
}
georg
  • 211,518
  • 52
  • 313
  • 390
  • By "there's no way to store an object in a hashtable" you mean "there's no way to store an object **as a key** in a hashtable"? – Jon Onstott May 24 '13 at 22:32