Sha256: a4c669801c4f8d3a9cfea6841eb386329a975eb4c14afb7caa0845b32ab93ca4

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

/*
---
 
script: FastArray.js
 
description: Array with fast lookup (based on object)
 
license: MIT-style license.
 
requires:
- Core/Class
 
provides: [FastArray]
 
...
*/

window.FastArray = function() {
  this.push.apply(this, arguments);
}

FastArray.from = function(ary) {
  var array = new FastArray;
  FastArray.prototype.push.apply(array, ary)
  return array;
}
Array.fast = function() {
  var object = {};
  for (var i = 0, arg; arg = arguments[i++];) object[arg] = true;
  return object;
};
FastArray.prototype = {
  push: function() {
    Array.each(arguments, function(argument) {
      this[argument] = true;
    }, this);
  },

  contains: function(argument) {
    return this[argument];
  },
  
  concat: function(array) {
    if ('length' in array) this.push.apply(this, array);
    else for (var key in array) if (array.hasOwnProperty(key)) this[key] = true;
    return this;
  },
  
  each: function(callback, bound) {
    for (var key in this) {
      if (this.hasOwnProperty(key)) callback.call(bound || this, key, this[key]);
    }
  },

  include: function(value) {
    this[value] = true;
  },

  erase: function(value) {
    delete this[value];
  },
  
  join: function(delimeter) {
    var bits = [];
    for (var key in this) if (this.hasOwnProperty(key)) bits.push(key);
    return bits.join(delimeter)
  },
  
  toObject: function() {
    var object = {};
    for (var key in this) if (this.hasOwnProperty(key)) object[key] = this[key];
    return object;
  }
};

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lsd_rails-0.1.2 Packages/mootools-ext/Source/Types/FastArray.js
lsd_rails-0.1.1 Packages/mootools-ext/Source/Types/FastArray.js
lsd_rails-0.1 Packages/mootools-ext/Source/Types/FastArray.js