/* * Helma License Notice * * The contents of this file are subject to the Helma License * Version 2.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://adele.helma.org/download/helma/license.txt * * Copyright 1998-2006 Helma Software. All Rights Reserved. * * $RCSfile: Array.js,v $ * $Author$ * $Revision$ * $Date$ */ /** * @fileoverview Adds useful methods to the JavaScript Array type. *

* To use this optional module, its repository needs to be added to the * application, for example by calling app.addRepository('modules/core/Array.js') * * @addon */ /** * Return the first index position of a value * contained in an array, or -1 if it isn't contained. * @param {Object} val the value to check * @return {int} the index of the first occurence of val, or -1 */ Array.prototype.indexOf = function(val) { var i = -1; while (i++ < this.length -1) { if (this[i] == val) return i; } return -1; }; /** * return the last index position of a value * contained in an array, or -1 if it isn't contained. * @param {Object} val the value to check * @return {int} the index of the first occurence of val, or -1 */ Array.prototype.lastIndexOf = function(val) { var i = 1; while (this.length - i++ >= 0) { if (this[i] == val) return i; } return -1; }; /** * check if an array passed as argument contains * a specific value (start from end of array) * @param {Object} val the value to check * @return {boolean} true if the value is contained */ Array.prototype.contains = function(val) { if (this.indexOf(val) > -1) return true; return false; }; /** * Retrieve the union set of a bunch of arrays * @param {Array} array1,... the arrays to unify * @return {Array} the union set */ Array.union = function() { var result = []; var map = {}; for (var i=0; i