123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- if (!dojo._hasResource["dojo._base.array"]) { // _hasResource checks added by
- // build. Do not use
- // _hasResource directly in your
- // code.
- dojo._hasResource["dojo._base.array"] = true;
- dojo.require("dojo._base.lang");
- dojo.provide("dojo._base.array");
- (function() {
- var _getParts = function(arr, obj, cb) {
- return [
- (dojo.isString(arr) ? arr.split("") : arr),
- (obj || dojo.global),
- // FIXME: cache the anonymous functions we create here?
- (dojo.isString(cb) ? (new Function("item", "index",
- "array", cb)) : cb)];
- }
- dojo.mixin(dojo, {
- indexOf : function( /* Array */array,
- /* Object */value,
- /* Integer? */fromIndex,
- /* Boolean? */findLast) {
- // summary:
- // locates the first index of the provided value in the
- // passed array. If the value is not found, -1 is returned.
- // description:
- // For details on this method, see:
- // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:indexOf
- var i = 0, step = 1, end = array.length;
- if (findLast) {
- i = end - 1;
- step = end = -1;
- }
- for (i = fromIndex || i; i != end; i += step) {
- if (array[i] == value) {
- return i;
- }
- }
- return -1; // Number
- },
- lastIndexOf : function(/* Array */array, /* Object */value, /* Integer? */
- fromIndex) {
- // summary:
- // locates the last index of the provided value in the passed
- // array.
- // If the value is not found, -1 is returned.
- // description:
- // For details on this method, see:
- // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:lastIndexOf
- return dojo.indexOf(array, value, fromIndex, true); // Number
- },
- forEach : function(/* Array */arr, /* Function */callback, /* Object? */
- obj) {
- // summary:
- // for every item in arr, call callback with that item as its
- // only parameter.
- // description:
- // Return values are ignored. This function
- // corresponds (and wraps) the JavaScript 1.6 forEach method.
- // For
- // more details, see:
- // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:forEach
- // match the behavior of the built-in forEach WRT empty arrs
- if (!arr || !arr.length) {
- return;
- }
- // FIXME: there are several ways of handilng thisObject. Is
- // dojo.global always the default context?
- var _p = _getParts(arr, obj, callback);
- arr = _p[0];
- for (var i = 0, l = _p[0].length; i < l; i++) {
- _p[2].call(_p[1], arr[i], i, arr);
- }
- },
- _everyOrSome : function(/* Boolean */every, /* Array */arr, /* Function */
- callback, /* Object? */obj) {
- var _p = _getParts(arr, obj, callback);
- arr = _p[0];
- for (var i = 0, l = arr.length; i < l; i++) {
- var result = !!_p[2].call(_p[1], arr[i], i, arr);
- if (every ^ result) {
- return result; // Boolean
- }
- }
- return every; // Boolean
- },
- every : function(/* Array */arr, /* Function */callback, /* Object? */
- thisObject) {
- // summary:
- // Determines whether or not every item in the array satisfies
- // the
- // condition implemented by callback.
- // description:
- // The parameter thisObject may be used to
- // scope the call to callback. The function signature is derived
- // from the JavaScript 1.6 Array.every() function. More
- // information on this can be found here:
- // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:every
- // example:
- // | dojo.every([1, 2, 3, 4], function(item){ return item>1; });
- // returns false
- // example:
- // | dojo.every([1, 2, 3, 4], function(item){ return item>0; });
- // returns true
- return this._everyOrSome(true, arr, callback, thisObject); // Boolean
- },
- some : function(/* Array */arr, /* Function */callback, /* Object? */
- thisObject) {
- // summary:
- // Determines whether or not any item in the array satisfies the
- // condition implemented by callback.
- // description:
- // The parameter thisObject may be used to
- // scope the call to callback. The function signature is derived
- // from the JavaScript 1.6 Array.some() function. More
- // information on this can be found here:
- // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:some
- // example:
- // | dojo.some([1, 2, 3, 4], function(item){ return item>1; });
- // returns true
- // example:
- // | dojo.some([1, 2, 3, 4], function(item){ return item<1; });
- // returns false
- return this._everyOrSome(false, arr, callback, thisObject); // Boolean
- },
- map : function(/* Array */arr, /* Function */func, /* Function? */obj) {
- // summary:
- // applies a function to each element of an Array and creates
- // an Array with the results
- // description:
- // Returns a new array constituted from the return values of
- // passing each element of arr into unary_func. The obj
- // parameter
- // may be passed to enable the passed function to be called in
- // that scope. In environments that support JavaScript 1.6, this
- // function is a passthrough to the built-in map() function
- // provided by Array instances. For details on this, see:
- // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:map
- // example:
- // | dojo.map([1, 2, 3, 4], function(item){ return item+1 });
- // returns [2, 3, 4, 5]
- var _p = _getParts(arr, obj, func);
- arr = _p[0];
- var outArr = ((arguments[3]) ? (new arguments[3]()) : []);
- for (var i = 0; i < arr.length; ++i) {
- outArr.push(_p[2].call(_p[1], arr[i], i, arr));
- }
- return outArr; // Array
- },
- filter : function(/* Array */arr, /* Function */callback, /* Object? */
- obj) {
- // summary:
- // Returns a new Array with those items from arr that match the
- // condition implemented by callback. ob may be used to
- // scope the call to callback. The function signature is derived
- // from the JavaScript 1.6 Array.filter() function.
- //
- // More information on the JS 1.6 API can be found here:
- // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:filter
- // example:
- // | dojo.filter([1, 2, 3, 4], function(item){ return item>1;
- // });
- // returns [2, 3, 4]
- var _p = _getParts(arr, obj, callback);
- arr = _p[0];
- var outArr = [];
- for (var i = 0; i < arr.length; i++) {
- if (_p[2].call(_p[1], arr[i], i, arr)) {
- outArr.push(arr[i]);
- }
- }
- return outArr; // Array
- }
- });
- })();
- }
|