List.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/Collections/List.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. cc._RF.push(module, 'ba12cpXZdhEg5GpgSjDTVhb', 'List');
  13. // script/Collections/List.ts
  14. "use strict";
  15. Object.defineProperty(exports, "__esModule", { value: true });
  16. exports.List = void 0;
  17. /**
  18. * List容器
  19. */
  20. var List = /** @class */ (function () {
  21. function List(array) {
  22. if (array)
  23. this._items = array;
  24. else
  25. this._items = [];
  26. }
  27. Object.defineProperty(List.prototype, "Count", {
  28. /**
  29. * 数量(属性)
  30. */
  31. get: function () { return this._items.length; },
  32. enumerable: false,
  33. configurable: true
  34. });
  35. /**
  36. * 添加
  37. * @param item Item
  38. */
  39. List.prototype.Add = function (item) {
  40. this._items.push(item);
  41. };
  42. /**
  43. * 移除
  44. * @param item Item
  45. * @returns 是否移除成功
  46. */
  47. List.prototype.Remove = function (item) {
  48. for (var i = 0, j = this._items.length; i < j; i++) {
  49. if (this._items[i] === item) {
  50. this._items.splice(i, 1);
  51. return true;
  52. }
  53. }
  54. return false;
  55. };
  56. /**
  57. * 从索引处移除
  58. * @param index 索引
  59. * @returns 是否移除成功
  60. */
  61. List.prototype.RemoveAt = function (index) {
  62. if (index < 0 || index >= this._items.length) {
  63. return false;
  64. }
  65. this._items.splice(index, 1);
  66. return true;
  67. };
  68. /**
  69. * 包含
  70. * @param item Item
  71. * @returns True: 包含; False: 未包含
  72. */
  73. List.prototype.Contains = function (item) {
  74. for (var i = 0, j = this._items.length; i < j; i++) {
  75. if (this._items[i] === item) {
  76. return true;
  77. }
  78. }
  79. return false;
  80. };
  81. /**
  82. * 排序
  83. * @param comparer 比较器
  84. */
  85. List.prototype.Sort = function (comparer) {
  86. this._items.sort(comparer);
  87. };
  88. /**
  89. * 获取下标(不存在返回-1)
  90. * @param item Item
  91. * @returns 下标
  92. */
  93. List.prototype.IndexOf = function (item) {
  94. for (var i = 0, j = this._items.length; i < j; i++) {
  95. if (this._items[i] === item) {
  96. return i;
  97. }
  98. }
  99. return -1;
  100. };
  101. /**
  102. * 索引器
  103. * @param index 索引
  104. * @returns Item
  105. */
  106. List.prototype.GetItem = function (index) {
  107. return this._items[index];
  108. };
  109. /**
  110. * 迭代器
  111. * @param callback 回调
  112. */
  113. List.prototype.Foreach = function (callback, thisArg) {
  114. if (callback) {
  115. this._items.forEach(function (value, index, _) {
  116. callback.call(thisArg, value, index);
  117. });
  118. }
  119. };
  120. /**
  121. * 过滤
  122. * @param predicate
  123. * @returns 过滤后新的List<T>
  124. */
  125. List.prototype.Filter = function (predicate) {
  126. return new List(this._items.filter(predicate));
  127. };
  128. /**
  129. * 清理
  130. */
  131. List.prototype.Clear = function () {
  132. this._items = [];
  133. };
  134. return List;
  135. }());
  136. exports.List = List;
  137. cc._RF.pop();
  138. }
  139. if (nodeEnv) {
  140. __define(__module.exports, __require, __module);
  141. }
  142. else {
  143. __quick_compile_project__.registerModuleFunc(__filename, function () {
  144. __define(__module.exports, __require, __module);
  145. });
  146. }
  147. })();
  148. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvQ29sbGVjdGlvbnMvTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNIO0lBSUksY0FBWSxLQUFXO1FBQ25CLElBQUksS0FBSztZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDOztZQUVwQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBS0Qsc0JBQVcsdUJBQUs7UUFIaEI7O1dBRUc7YUFDSCxjQUFxQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFHakQ7OztPQUdHO0lBQ0ksa0JBQUcsR0FBVixVQUFXLElBQU87UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBR0Q7Ozs7T0FJRztJQUNJLHFCQUFNLEdBQWIsVUFBYyxJQUFPO1FBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2hELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDekIsT0FBTyxJQUFJLENBQUM7YUFDZjtTQUNKO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSx1QkFBUSxHQUFmLFVBQWdCLEtBQWE7UUFDekIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUMxQyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHVCQUFRLEdBQWYsVUFBZ0IsSUFBTztRQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUN6QixPQUFPLElBQUksQ0FBQzthQUNmO1NBQ0o7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBR0Q7OztPQUdHO0lBQ0ksbUJBQUksR0FBWCxVQUFZLFFBQWlDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFHRDs7OztPQUlHO0lBQ0ksc0JBQU8sR0FBZCxVQUFlLElBQU87UUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDekIsT0FBTyxDQUFDLENBQUM7YUFDWjtTQUNKO1FBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksc0JBQU8sR0FBZCxVQUFlLEtBQWE7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFHRDs7O09BR0c7SUFDSSxzQkFBTyxHQUFkLFVBQWUsUUFBMEMsRUFBRSxPQUFhO1FBQ3BFLElBQUksUUFBUSxFQUFFO1lBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBQyxLQUFRLEVBQUUsS0FBYSxFQUFFLENBQU07Z0JBQ2hELFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6QyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxxQkFBTSxHQUFiLFVBQWMsU0FBMkQ7UUFDckUsT0FBTyxJQUFJLElBQUksQ0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFHRDs7T0FFRztJQUNJLG9CQUFLLEdBQVo7UUFDSSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBQ0wsV0FBQztBQUFELENBbElBLEFBa0lDLElBQUE7QUFsSVksb0JBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIExpc3TlrrnlmahcbiAqL1xuZXhwb3J0IGNsYXNzIExpc3Q8VD4ge1xuXG4gICAgcHJpdmF0ZSBfaXRlbXM6IFRbXTtcblxuICAgIGNvbnN0cnVjdG9yKGFycmF5PzogVFtdKSB7XG4gICAgICAgIGlmIChhcnJheSlcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zID0gYXJyYXk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zID0gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5pWw6YePKOWxnuaApylcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IENvdW50KCkgeyByZXR1cm4gdGhpcy5faXRlbXMubGVuZ3RoOyB9XG5cblxuICAgIC8qKlxuICAgICAqIOa3u+WKoFxuICAgICAqIEBwYXJhbSBpdGVtIEl0ZW1cbiAgICAgKi9cbiAgICBwdWJsaWMgQWRkKGl0ZW06IFQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXRlbXMucHVzaChpdGVtKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIOenu+mZpFxuICAgICAqIEBwYXJhbSBpdGVtIEl0ZW1cbiAgICAgKiBAcmV0dXJucyDmmK/lkKbnp7vpmaTmiJDlip9cbiAgICAgKi9cbiAgICBwdWJsaWMgUmVtb3ZlKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSB0aGlzLl9pdGVtcy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pdGVtc1tpXSA9PT0gaXRlbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2l0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5LuO57Si5byV5aSE56e76ZmkXG4gICAgICogQHBhcmFtIGluZGV4IOe0ouW8lVxuICAgICAqIEByZXR1cm5zIOaYr+WQpuenu+mZpOaIkOWKn1xuICAgICAqL1xuICAgIHB1YmxpYyBSZW1vdmVBdChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5faXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5YyF5ZCrXG4gICAgICogQHBhcmFtIGl0ZW0gSXRlbVxuICAgICAqIEByZXR1cm5zIFRydWU6IOWMheWQqzsgRmFsc2U6IOacquWMheWQq1xuICAgICAqL1xuICAgIHB1YmxpYyBDb250YWlucyhpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBqID0gdGhpcy5faXRlbXMubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5faXRlbXNbaV0gPT09IGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiDmjpLluo9cbiAgICAgKiBAcGFyYW0gY29tcGFyZXIg5q+U6L6D5ZmoXG4gICAgICovXG4gICAgcHVibGljIFNvcnQoY29tcGFyZXI/OiAoYTogVCwgYjogVCkgPT4gbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2l0ZW1zLnNvcnQoY29tcGFyZXIpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICog6I635Y+W5LiL5qCHKOS4jeWtmOWcqOi/lOWbni0xKVxuICAgICAqIEBwYXJhbSBpdGVtIEl0ZW1cbiAgICAgKiBAcmV0dXJucyDkuIvmoIdcbiAgICAgKi9cbiAgICBwdWJsaWMgSW5kZXhPZihpdGVtOiBUKTogbnVtYmVyIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSB0aGlzLl9pdGVtcy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pdGVtc1tpXSA9PT0gaXRlbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDntKLlvJXlmahcbiAgICAgKiBAcGFyYW0gaW5kZXgg57Si5byVXG4gICAgICogQHJldHVybnMgSXRlbVxuICAgICAqL1xuICAgIHB1YmxpYyBHZXRJdGVtKGluZGV4OiBudW1iZXIpOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zW2luZGV4XTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIOi/reS7o+WZqFxuICAgICAqIEBwYXJhbSBjYWxsYmFjayDlm57osINcbiAgICAgKi9cbiAgICBwdWJsaWMgRm9yZWFjaChjYWxsYmFjazogKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IHZvaWQsIHRoaXNBcmc/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICB0aGlzLl9pdGVtcy5mb3JFYWNoKCh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgXzogVFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaW5kZXgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDov4fmu6RcbiAgICAgKiBAcGFyYW0gcHJlZGljYXRlIFxuICAgICAqIEByZXR1cm5zIOi/h+a7pOWQjuaWsOeahExpc3Q8VD5cbiAgICAgKi9cbiAgICBwdWJsaWMgRmlsdGVyKHByZWRpY2F0ZTogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiB1bmtub3duKTogTGlzdDxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgTGlzdDxUPih0aGlzLl9pdGVtcy5maWx0ZXIocHJlZGljYXRlKSlcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIOa4heeQhlxuICAgICAqL1xuICAgIHB1YmxpYyBDbGVhcigpIHtcbiAgICAgICAgdGhpcy5faXRlbXMgPSBbXTtcbiAgICB9XG59Il19