Name

global.ArrayUtil

Description

Various utility functions to assist with javascript Array s var au = new ArrayUtil(); au.

Script

var ArrayUtil = Class.create();
ArrayUtil.prototype = {
  initialize: function(){
  },
  
  contains: function(array, element){
      array = this.convertArray(array);
      for (var i = 0; i < array.length; i++) {
          if (array[i] == element) {
              return true;
          }
      }
      return false;
  },
  
  indexOf: function(array, item, startIndex){
      array = this.convertArray(array);
      var len = array.length;
      if (startIndex == null) {
          startIndex = 0;
      }
      else 
          if (startIndex < 0) {
              startIndex += len;
              if (startIndex < 0) 
                  startIndex = 0;
          }
      
      for (var i = startIndex; i < len; i++) {
          var val = array[i] || array.charAt && array.charAt(i);
          if (val == item) 
              return i;
      }
      
      return -1;
  },
  
  ensureArray: function(obj){
      var array = new Array();
      
      if (obj == null || typeof obj == "undefined") 
          return array;
      
      if (obj.constructor.toString().indexOf("Array") > -1) 
          return obj;
      
      array.push(obj);
      return array;
  },
  
  concat: function(parent, children){
      for (var i = 0; i < children.length; i++) {
          var item = children[i];
          parent.push(item);
      }
      
      return parent;
  },
  
  convertArray: function(a){
      if (typeof a.size === 'function' && a.size() > 0) {
          var newArray = new Array();
          for (var i = 0; i < a.size(); i++) {
              var val = a.get(i);
              newArray.push(val);
          }
          a = newArray;
      }
      
      return a;
  },
  
  /**
   * Find the difference between two or more arrays
   * diff(a,b,c)
   * will return an array of items from a that were not found in either b or c
   * Duplicate items are removed from the result
   * @param two or more arrays
   * @return Array
   */
  diff: function(){
      if (!arguments.length) 
          return [];
      
      var a1 = arguments[0];
      if (arguments.length == 1) 
          return a1;
      
      var a = null;
  	var a2 = null;
      var n = 1;
      while (n < arguments.length) {
          a = [];
          a2 = arguments[n];
          var l = a1.length;
          var l2 = a2.length;
          var diff = true;
          for (var i = 0; i < l; i++) {
              for (var j = 0; j < l2; j++) {
                  if (a1[i] === a2[j]) {
                      diff = false;
                      break;
                  }
              }
              diff ? a.push(a1[i]) : diff = true;
          }
          a1 = a;
          n++;
      }
      return this.unique(a);
  },
  
  /**
   * Find the intersect between two or more arrays
   * intersect(a,b,c)
   * will return an array of items from a that were also found in both b or c
   * Duplicate items are removed from the result
   * @param two or more arrays
   * @return Array
   */
  intersect: function(){
      if (!arguments.length) 
          return [];
      
      var a1 = arguments[0];
      if (arguments.length == 1) 
          return a1;
     
      var a = null;
  	var a2 = null;
      var n = 1;
      while (n < arguments.length) {
          a = [];
          a2 = arguments[n];
          var l = a1.length;
          var l2 = a2.length;
          for (var i = 0; i < l; i++) {
              for (var j = 0; j < l2; j++) {
                  if (a1[i] === a2[j]) 
                      a.push(a1[i]);
              }
          }
          a1 = a;
          n++;
      }
      return this.unique(a);
  },
  
  /**
   * Merge two or more arrays together
   * union(a,b,c)
   * will return an array of items with items from all arrays, duplicate items are removed from the result
   * @param two or more arrays
   * @return Array
   */
  union: function(){
      if (!arguments.length) 
          return [];
      
      var a1 = arguments[0];
      var a = [].concat(a1);
      var l = arguments.length;
      var n = 1;
      for (var i = n; i < l; i++) {
          a = a.concat(arguments[i]);
      }
      return this.unique(a);
  },
  
  /**
   * Removes duplicate items from an array
   * @param Array a1
   * @return Array
   */
  unique: function(a1) {
      var a = [];
      for (var i = a1.length - 1; i >= 0; i--) {
          if (a.indexOf(a1[i]) === -1)
              a.push(a1[i]);
      }
      return a.reverse();
  },
  
  type: "ArrayUtil"
}


Sys ID

fb32a2d8c0a80a6000e907036f484b5b

Offical Documentation

Official Docs: