array.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:4k
源码类别:

OA系统

开发平台:

Java

  1. /*
  2. Copyright (c) 2004-2006, The Dojo Foundation
  3. All Rights Reserved.
  4. Licensed under the Academic Free License version 2.1 or above OR the
  5. modified BSD license. For more information on Dojo licensing, see:
  6. http://dojotoolkit.org/community/licensing.shtml
  7. */
  8. dojo.provide("dojo.lang.array");
  9. dojo.require("dojo.lang.common");
  10. dojo.lang.mixin(dojo.lang, {has:function (obj, name) {
  11. try {
  12. return typeof obj[name] != "undefined";
  13. }
  14. catch (e) {
  15. return false;
  16. }
  17. }, isEmpty:function (obj) {
  18. if (dojo.lang.isObject(obj)) {
  19. var tmp = {};
  20. var count = 0;
  21. for (var x in obj) {
  22. if (obj[x] && (!tmp[x])) {
  23. count++;
  24. break;
  25. }
  26. }
  27. return count == 0;
  28. } else {
  29. if (dojo.lang.isArrayLike(obj) || dojo.lang.isString(obj)) {
  30. return obj.length == 0;
  31. }
  32. }
  33. }, map:function (arr, obj, unary_func) {
  34. var isString = dojo.lang.isString(arr);
  35. if (isString) {
  36. arr = arr.split("");
  37. }
  38. if (dojo.lang.isFunction(obj) && (!unary_func)) {
  39. unary_func = obj;
  40. obj = dj_global;
  41. } else {
  42. if (dojo.lang.isFunction(obj) && unary_func) {
  43. var tmpObj = obj;
  44. obj = unary_func;
  45. unary_func = tmpObj;
  46. }
  47. }
  48. if (Array.map) {
  49. var outArr = Array.map(arr, unary_func, obj);
  50. } else {
  51. var outArr = [];
  52. for (var i = 0; i < arr.length; ++i) {
  53. outArr.push(unary_func.call(obj, arr[i]));
  54. }
  55. }
  56. if (isString) {
  57. return outArr.join("");
  58. } else {
  59. return outArr;
  60. }
  61. }, reduce:function (arr, initialValue, obj, binary_func) {
  62. var reducedValue = initialValue;
  63. if (arguments.length == 2) {
  64. binary_func = initialValue;
  65. reducedValue = arr[0];
  66. arr = arr.slice(1);
  67. } else {
  68. if (arguments.length == 3) {
  69. if (dojo.lang.isFunction(obj)) {
  70. binary_func = obj;
  71. obj = null;
  72. }
  73. } else {
  74. if (dojo.lang.isFunction(obj)) {
  75. var tmp = binary_func;
  76. binary_func = obj;
  77. obj = tmp;
  78. }
  79. }
  80. }
  81. var ob = obj || dj_global;
  82. dojo.lang.map(arr, function (val) {
  83. reducedValue = binary_func.call(ob, reducedValue, val);
  84. });
  85. return reducedValue;
  86. }, forEach:function (anArray, callback, thisObject) {
  87. if (dojo.lang.isString(anArray)) {
  88. anArray = anArray.split("");
  89. }
  90. if (Array.forEach) {
  91. Array.forEach(anArray, callback, thisObject);
  92. } else {
  93. if (!thisObject) {
  94. thisObject = dj_global;
  95. }
  96. for (var i = 0, l = anArray.length; i < l; i++) {
  97. callback.call(thisObject, anArray[i], i, anArray);
  98. }
  99. }
  100. }, _everyOrSome:function (every, arr, callback, thisObject) {
  101. if (dojo.lang.isString(arr)) {
  102. arr = arr.split("");
  103. }
  104. if (Array.every) {
  105. return Array[every ? "every" : "some"](arr, callback, thisObject);
  106. } else {
  107. if (!thisObject) {
  108. thisObject = dj_global;
  109. }
  110. for (var i = 0, l = arr.length; i < l; i++) {
  111. var result = callback.call(thisObject, arr[i], i, arr);
  112. if (every && !result) {
  113. return false;
  114. } else {
  115. if ((!every) && (result)) {
  116. return true;
  117. }
  118. }
  119. }
  120. return Boolean(every);
  121. }
  122. }, every:function (arr, callback, thisObject) {
  123. return this._everyOrSome(true, arr, callback, thisObject);
  124. }, some:function (arr, callback, thisObject) {
  125. return this._everyOrSome(false, arr, callback, thisObject);
  126. }, filter:function (arr, callback, thisObject) {
  127. var isString = dojo.lang.isString(arr);
  128. if (isString) {
  129. arr = arr.split("");
  130. }
  131. var outArr;
  132. if (Array.filter) {
  133. outArr = Array.filter(arr, callback, thisObject);
  134. } else {
  135. if (!thisObject) {
  136. if (arguments.length >= 3) {
  137. dojo.raise("thisObject doesn't exist!");
  138. }
  139. thisObject = dj_global;
  140. }
  141. outArr = [];
  142. for (var i = 0; i < arr.length; i++) {
  143. if (callback.call(thisObject, arr[i], i, arr)) {
  144. outArr.push(arr[i]);
  145. }
  146. }
  147. }
  148. if (isString) {
  149. return outArr.join("");
  150. } else {
  151. return outArr;
  152. }
  153. }, unnest:function () {
  154. var out = [];
  155. for (var i = 0; i < arguments.length; i++) {
  156. if (dojo.lang.isArrayLike(arguments[i])) {
  157. var add = dojo.lang.unnest.apply(this, arguments[i]);
  158. out = out.concat(add);
  159. } else {
  160. out.push(arguments[i]);
  161. }
  162. }
  163. return out;
  164. }, toArray:function (arrayLike, startOffset) {
  165. var array = [];
  166. for (var i = startOffset || 0; i < arrayLike.length; i++) {
  167. array.push(arrayLike[i]);
  168. }
  169. return array;
  170. }});