index.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/__node_modules/k8w-linq-array/index.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
  12. ///<reference path="index.d.ts"/>
  13. var _a;
  14. var extendFuncs = {
  15. remove: function (filter) {
  16. if (typeof (filter) == 'function') {
  17. for (var i = this.length - 1; i > -1; --i) {
  18. filter(this[i], i, this) && this.splice(i, 1);
  19. }
  20. }
  21. else {
  22. for (var i = this.length - 1; i > -1; --i) {
  23. this[i] === filter && this.splice(i, 1);
  24. }
  25. }
  26. return this;
  27. },
  28. removeOne: function (filter) {
  29. if (typeof (filter) == 'function') {
  30. for (var i = 0; i < this.length; ++i) {
  31. if (filter(this[i], i, this)) {
  32. this.splice(i, 1);
  33. return this;
  34. }
  35. }
  36. }
  37. else {
  38. for (var i = 0; i < this.length; ++i) {
  39. if (this[i] === filter) {
  40. this.splice(i, 1);
  41. return this;
  42. }
  43. }
  44. }
  45. return this;
  46. },
  47. first: function () {
  48. return this.length ? this[0] : null;
  49. },
  50. last: function () {
  51. return this.length ? this[this.length - 1] : null;
  52. },
  53. max: function (mapper) {
  54. if (!this.length) {
  55. return null;
  56. }
  57. if (typeof (mapper) == 'function') {
  58. var max = mapper(this[0], 0, this);
  59. for (var i = 1; i < this.length; ++i) {
  60. var temp = mapper(this[i], i, this);
  61. max = temp > max ? temp : max;
  62. }
  63. return max;
  64. }
  65. else {
  66. return this.reduce(function (prev, cur) { return prev > cur ? prev : cur; });
  67. }
  68. },
  69. min: function (mapper) {
  70. if (!this.length) {
  71. return null;
  72. }
  73. function _min(a, b) {
  74. return a < b ? a : b;
  75. }
  76. if (typeof (mapper) == 'function') {
  77. var min = mapper(this[0], 0, this);
  78. for (var i = 1; i < this.length; ++i) {
  79. var temp = mapper(this[i], i, this);
  80. min = temp < min ? temp : min;
  81. }
  82. return min;
  83. }
  84. else {
  85. return this.reduce(function (prev, cur) { return _min(prev, cur); });
  86. }
  87. },
  88. distinct: function () {
  89. return this.filter(function (v, i, arr) { return arr.indexOf(v) === i; });
  90. },
  91. filterIndex: function (filter) {
  92. var output = [];
  93. for (var i = 0; i < this.length; ++i) {
  94. if (filter(this[i], i, this)) {
  95. output.push(i);
  96. }
  97. }
  98. return output;
  99. },
  100. count: function (filter) {
  101. var result = 0;
  102. for (var i = 0; i < this.length; ++i) {
  103. if (filter(this[i], i, this)) {
  104. ++result;
  105. }
  106. }
  107. return result;
  108. },
  109. sum: function (mapper) {
  110. var result = 0;
  111. for (var i = 0; i < this.length; ++i) {
  112. result += mapper ? mapper(this[i], i, this) : this[i];
  113. }
  114. return result;
  115. },
  116. average: function (mapper) {
  117. return this.sum(mapper) / this.length;
  118. },
  119. orderBy: function () {
  120. var mappers = [];
  121. for (var _i = 0; _i < arguments.length; _i++) {
  122. mappers[_i] = arguments[_i];
  123. }
  124. return this.slice().sort(function (a, b) {
  125. for (var i = 0; i < mappers.length; ++i) {
  126. var va = mappers[i](a);
  127. var vb = mappers[i](b);
  128. if (va > vb) {
  129. return 1;
  130. }
  131. else if (va < vb) {
  132. return -1;
  133. }
  134. }
  135. return 0;
  136. });
  137. },
  138. orderByDesc: function () {
  139. var mappers = [];
  140. for (var _i = 0; _i < arguments.length; _i++) {
  141. mappers[_i] = arguments[_i];
  142. }
  143. return this.slice().sort(function (a, b) {
  144. for (var i = 0; i < mappers.length; ++i) {
  145. var va = mappers[i](a);
  146. var vb = mappers[i](b);
  147. if (va > vb) {
  148. return -1;
  149. }
  150. else if (va < vb) {
  151. return 1;
  152. }
  153. }
  154. return 0;
  155. });
  156. },
  157. binarySearch: function (value, keyMapper) {
  158. var low = 0, high = this.length - 1;
  159. while (low <= high) {
  160. var mid = ((high + low) / 2) | 0;
  161. var midValue = keyMapper ? keyMapper(this[mid]) : this[mid];
  162. if (value === midValue) {
  163. return mid;
  164. }
  165. else if (value > midValue) {
  166. low = mid + 1;
  167. }
  168. else if (value < midValue) {
  169. high = mid - 1;
  170. }
  171. }
  172. return -1;
  173. },
  174. binaryInsert: function (item, keyMapper, unique) {
  175. if (typeof (keyMapper) == 'boolean') {
  176. unique = keyMapper;
  177. keyMapper = undefined;
  178. }
  179. var low = 0, high = this.length - 1;
  180. var mid = NaN;
  181. var itemValue = keyMapper ? keyMapper(item) : item;
  182. while (low <= high) {
  183. mid = ((high + low) / 2) | 0;
  184. var midValue = keyMapper ? keyMapper(this[mid]) : this[mid];
  185. if (itemValue === midValue) {
  186. if (unique) {
  187. return mid;
  188. }
  189. else {
  190. break;
  191. }
  192. }
  193. else if (itemValue > midValue) {
  194. low = mid + 1;
  195. }
  196. else if (itemValue < midValue) {
  197. high = mid - 1;
  198. }
  199. }
  200. var index = low > mid ? mid + 1 : mid;
  201. this.splice(index, 0, item);
  202. return index;
  203. },
  204. binaryDistinct: function (keyMapper) {
  205. return this.filter(function (v, i, arr) { return arr.binarySearch(v, keyMapper) === i; });
  206. },
  207. findLast: function (predicate) {
  208. for (var i = this.length - 1; i > -1; --i) {
  209. if (predicate(this[i], i, this)) {
  210. return this[i];
  211. }
  212. }
  213. return undefined;
  214. },
  215. findLastIndex: function (predicate) {
  216. for (var i = this.length - 1; i > -1; --i) {
  217. if (predicate(this[i], i, this)) {
  218. return i;
  219. }
  220. }
  221. return -1;
  222. },
  223. groupBy: function (grouper) {
  224. var group = this.reduce(function (prev, next) {
  225. var groupKey = grouper(next);
  226. if (!prev[groupKey]) {
  227. prev[groupKey] = [];
  228. }
  229. prev[groupKey].push(next);
  230. return prev;
  231. }, {});
  232. return Object.keys(group).map(function (key) {
  233. var arr = group[key];
  234. arr.key = key;
  235. return arr;
  236. });
  237. },
  238. __k8w_extended: {
  239. value: true
  240. }
  241. };
  242. if (!Array.prototype.__k8w_extended) {
  243. for (var key in extendFuncs) {
  244. Object.defineProperties(Array.prototype, (_a = {},
  245. _a[key] = {
  246. value: extendFuncs[key],
  247. writable: true
  248. },
  249. _a));
  250. }
  251. }
  252. }
  253. if (nodeEnv) {
  254. __define(__module.exports, __require, __module);
  255. }
  256. else {
  257. __quick_compile_project__.registerModuleFunc(__filename, function () {
  258. __define(__module.exports, __require, __module);
  259. });
  260. }
  261. })();