dzkcc-mflow 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.d.ts +22 -22
- package/dist/App.js +27 -27
- package/dist/_virtual/_tslib.js +30 -30
- package/dist/core/Api.d.ts +53 -53
- package/dist/core/Core.d.ts +18 -18
- package/dist/core/Core.js +78 -78
- package/dist/core/Decorators.d.ts +7 -7
- package/dist/core/Decorators.js +99 -99
- package/dist/core/ICocosResManager.d.ts +11 -11
- package/dist/core/ServiceLocator.d.ts +7 -7
- package/dist/core/ServiceLocator.js +31 -31
- package/dist/core/index.d.ts +5 -5
- package/dist/libs/BaseView.d.ts +21 -21
- package/dist/libs/BaseView.js +78 -78
- package/dist/libs/Broadcaster.d.ts +101 -101
- package/dist/libs/Broadcaster.js +240 -240
- package/dist/libs/CocosCore.d.ts +5 -5
- package/dist/libs/CocosCore.js +16 -16
- package/dist/libs/ResLoader.d.ts +10 -10
- package/dist/libs/ResLoader.js +76 -74
- package/dist/libs/UIManager.d.ts +34 -34
- package/dist/libs/UIManager.js +251 -251
- package/dist/libs/UIRoot.d.ts +4 -4
- package/dist/libs/UIRoot.js +4 -4
- package/dist/libs/index.d.ts +6 -6
- package/dist/mflow-tools.zip +0 -0
- package/dist/utils/ArrayExt.d.ts +67 -67
- package/dist/utils/ArrayExt.js +298 -298
- package/dist/utils/ArrayUtil.d.ts +41 -41
- package/dist/utils/ArrayUtil.js +93 -93
- package/dist/utils/CameraUtil.d.ts +10 -10
- package/dist/utils/CameraUtil.js +23 -23
- package/dist/utils/ImageUtil.d.ts +33 -33
- package/dist/utils/ImageUtil.js +92 -92
- package/dist/utils/MathUtil.d.ts +213 -213
- package/dist/utils/MathUtil.js +435 -435
- package/dist/utils/ObjectUtil.d.ts +24 -24
- package/dist/utils/ObjectUtil.js +58 -58
- package/dist/utils/PlatformUtil.d.ts +9 -9
- package/dist/utils/PlatformUtil.js +27 -27
- package/dist/utils/RotateUtil.d.ts +30 -30
- package/dist/utils/RotateUtil.js +63 -63
- package/dist/utils/StringUtil.d.ts +107 -107
- package/dist/utils/StringUtil.js +249 -249
- package/dist/utils/TimeUtil.d.ts +31 -31
- package/dist/utils/TimeUtil.js +85 -85
- package/dist/utils/index.d.ts +9 -9
- package/package.json +1 -1
package/dist/utils/ArrayExt.js
CHANGED
|
@@ -1,299 +1,299 @@
|
|
|
1
|
-
// @ts-ignore
|
|
2
|
-
!Array.prototype.__cc_extended && Object.defineProperties(Array.prototype, {
|
|
3
|
-
remove: {
|
|
4
|
-
value: function (filter) {
|
|
5
|
-
if (typeof (filter) == 'function') {
|
|
6
|
-
for (let i = this.length - 1; i > -1; --i) {
|
|
7
|
-
filter(this[i], i, this) && this.splice(i, 1);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
else {
|
|
11
|
-
for (let i = this.length - 1; i > -1; --i) {
|
|
12
|
-
this[i] === filter && this.splice(i, 1);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
return this;
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
removeOne: {
|
|
19
|
-
value: function (filter) {
|
|
20
|
-
if (typeof (filter) == 'function') {
|
|
21
|
-
for (let i = 0; i < this.length; ++i) {
|
|
22
|
-
if (filter(this[i], i, this)) {
|
|
23
|
-
this.splice(i, 1);
|
|
24
|
-
return this;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
for (let i = 0; i < this.length; ++i) {
|
|
30
|
-
if (this[i] === filter) {
|
|
31
|
-
this.splice(i, 1);
|
|
32
|
-
return this;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return this;
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
random: {
|
|
40
|
-
value: function () {
|
|
41
|
-
let element = this[Math.floor(Math.random() * this.length)];
|
|
42
|
-
return element;
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
fastRemoveAt: {
|
|
46
|
-
value: function (index) {
|
|
47
|
-
const length = this.length;
|
|
48
|
-
if (index < 0 || index >= length) {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
let res = this[index];
|
|
52
|
-
this[index] = this[length - 1];
|
|
53
|
-
this.length = length - 1;
|
|
54
|
-
return res;
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
fastRemove: {
|
|
58
|
-
value: function (value) {
|
|
59
|
-
const index = this.indexOf(value);
|
|
60
|
-
if (index >= 0) {
|
|
61
|
-
this[index] = this[this.length - 1];
|
|
62
|
-
--this.length;
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
first: {
|
|
69
|
-
value: function () {
|
|
70
|
-
return this.length ? this[0] : null;
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
last: {
|
|
74
|
-
value: function () {
|
|
75
|
-
return this.length ? this[this.length - 1] : null;
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
max: {
|
|
79
|
-
value: function (mapper) {
|
|
80
|
-
if (!this.length) {
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
function _max(a, b) {
|
|
84
|
-
return a > b ? a : b;
|
|
85
|
-
}
|
|
86
|
-
if (typeof (mapper) == 'function') {
|
|
87
|
-
let max = mapper(this[0], 0, this);
|
|
88
|
-
for (let i = 1; i < this.length; ++i) {
|
|
89
|
-
let temp = mapper(this[i], i, this);
|
|
90
|
-
max = temp > max ? temp : max;
|
|
91
|
-
}
|
|
92
|
-
return max;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
return this.reduce(function (prev, cur) { return _max(prev, cur); });
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
min: {
|
|
100
|
-
value: function (mapper) {
|
|
101
|
-
if (!this.length) {
|
|
102
|
-
return null;
|
|
103
|
-
}
|
|
104
|
-
function _min(a, b) {
|
|
105
|
-
return a < b ? a : b;
|
|
106
|
-
}
|
|
107
|
-
if (typeof (mapper) == 'function') {
|
|
108
|
-
let min = mapper(this[0], 0, this);
|
|
109
|
-
for (let i = 1; i < this.length; ++i) {
|
|
110
|
-
let temp = mapper(this[i], i, this);
|
|
111
|
-
min = temp < min ? temp : min;
|
|
112
|
-
}
|
|
113
|
-
return min;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
return this.reduce(function (prev, cur) { return _min(prev, cur); });
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
distinct: {
|
|
121
|
-
value: function () {
|
|
122
|
-
return this.filter(function (v, i, arr) { return arr.indexOf(v) === i; });
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
filterIndex: {
|
|
126
|
-
value: function (filter) {
|
|
127
|
-
let output = [];
|
|
128
|
-
for (let i = 0; i < this.length; ++i) {
|
|
129
|
-
if (filter(this[i], i, this)) {
|
|
130
|
-
output.push(i);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return output;
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
-
count: {
|
|
137
|
-
value: function (filter) {
|
|
138
|
-
let result = 0;
|
|
139
|
-
for (let i = 0; i < this.length; ++i) {
|
|
140
|
-
if (filter(this[i], i, this)) {
|
|
141
|
-
++result;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
return result;
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
sum: {
|
|
148
|
-
value: function (mapper) {
|
|
149
|
-
let result = 0;
|
|
150
|
-
for (let i = 0; i < this.length; ++i) {
|
|
151
|
-
result += mapper ? mapper(this[i], i, this) : this[i];
|
|
152
|
-
}
|
|
153
|
-
return result;
|
|
154
|
-
}
|
|
155
|
-
},
|
|
156
|
-
average: {
|
|
157
|
-
value: function (mapper) {
|
|
158
|
-
return this.sum(mapper) / this.length;
|
|
159
|
-
}
|
|
160
|
-
},
|
|
161
|
-
orderBy: {
|
|
162
|
-
value: function () {
|
|
163
|
-
let mappers = [];
|
|
164
|
-
for (let _i = 0; _i < arguments.length; _i++) {
|
|
165
|
-
mappers[_i] = arguments[_i];
|
|
166
|
-
}
|
|
167
|
-
return this.slice().sort(function (a, b) {
|
|
168
|
-
for (let i = 0; i < mappers.length; ++i) {
|
|
169
|
-
let va = mappers[i](a);
|
|
170
|
-
let vb = mappers[i](b);
|
|
171
|
-
if (va > vb) {
|
|
172
|
-
return 1;
|
|
173
|
-
}
|
|
174
|
-
else if (va < vb) {
|
|
175
|
-
return -1;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
return 0;
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
},
|
|
182
|
-
orderByDesc: {
|
|
183
|
-
value: function () {
|
|
184
|
-
let mappers = [];
|
|
185
|
-
for (let _i = 0; _i < arguments.length; _i++) {
|
|
186
|
-
mappers[_i] = arguments[_i];
|
|
187
|
-
}
|
|
188
|
-
return this.slice().sort(function (a, b) {
|
|
189
|
-
for (let i = 0; i < mappers.length; ++i) {
|
|
190
|
-
let va = mappers[i](a);
|
|
191
|
-
let vb = mappers[i](b);
|
|
192
|
-
if (va > vb) {
|
|
193
|
-
return -1;
|
|
194
|
-
}
|
|
195
|
-
else if (va < vb) {
|
|
196
|
-
return 1;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return 0;
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
binarySearch: {
|
|
204
|
-
value: function (value, keyMapper) {
|
|
205
|
-
let low = 0, high = this.length - 1;
|
|
206
|
-
while (low <= high) {
|
|
207
|
-
let mid = ((high + low) / 2) | 0;
|
|
208
|
-
let midValue = keyMapper ? keyMapper(this[mid]) : this[mid];
|
|
209
|
-
if (value === midValue) {
|
|
210
|
-
return mid;
|
|
211
|
-
}
|
|
212
|
-
else if (value > midValue) {
|
|
213
|
-
low = mid + 1;
|
|
214
|
-
}
|
|
215
|
-
else if (value < midValue) {
|
|
216
|
-
high = mid - 1;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
return -1;
|
|
220
|
-
}
|
|
221
|
-
},
|
|
222
|
-
binaryInsert: {
|
|
223
|
-
value: function (item, keyMapper, unique) {
|
|
224
|
-
if (typeof (keyMapper) == 'boolean') {
|
|
225
|
-
unique = keyMapper;
|
|
226
|
-
keyMapper = undefined;
|
|
227
|
-
}
|
|
228
|
-
let low = 0, high = this.length - 1;
|
|
229
|
-
let mid = NaN;
|
|
230
|
-
let itemValue = keyMapper ? keyMapper(item) : item;
|
|
231
|
-
while (low <= high) {
|
|
232
|
-
mid = ((high + low) / 2) | 0;
|
|
233
|
-
let midValue = keyMapper ? keyMapper(this[mid]) : this[mid];
|
|
234
|
-
if (itemValue === midValue) {
|
|
235
|
-
if (unique) {
|
|
236
|
-
return mid;
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
break;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
else if (itemValue > midValue) {
|
|
243
|
-
low = mid + 1;
|
|
244
|
-
}
|
|
245
|
-
else if (itemValue < midValue) {
|
|
246
|
-
high = mid - 1;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
let index = low > mid ? mid + 1 : mid;
|
|
250
|
-
this.splice(index, 0, item);
|
|
251
|
-
return index;
|
|
252
|
-
}
|
|
253
|
-
},
|
|
254
|
-
binaryDistinct: {
|
|
255
|
-
value: function (keyMapper) {
|
|
256
|
-
return this.filter(function (v, i, arr) { return arr.binarySearch(v, keyMapper) === i; });
|
|
257
|
-
}
|
|
258
|
-
},
|
|
259
|
-
findLast: {
|
|
260
|
-
value: function (predicate) {
|
|
261
|
-
for (let i = this.length - 1; i > -1; --i) {
|
|
262
|
-
if (predicate(this[i], i, this)) {
|
|
263
|
-
return this[i];
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
return undefined;
|
|
267
|
-
}
|
|
268
|
-
},
|
|
269
|
-
findLastIndex: {
|
|
270
|
-
value: function (predicate) {
|
|
271
|
-
for (let i = this.length - 1; i > -1; --i) {
|
|
272
|
-
if (predicate(this[i], i, this)) {
|
|
273
|
-
return i;
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
return -1;
|
|
277
|
-
}
|
|
278
|
-
},
|
|
279
|
-
groupBy: {
|
|
280
|
-
value: function (grouper) {
|
|
281
|
-
let group = this.reduce(function (prev, next) {
|
|
282
|
-
let groupKey = grouper(next);
|
|
283
|
-
if (!prev[groupKey]) {
|
|
284
|
-
prev[groupKey] = [];
|
|
285
|
-
}
|
|
286
|
-
prev[groupKey].push(next);
|
|
287
|
-
return prev;
|
|
288
|
-
}, {});
|
|
289
|
-
return Object.keys(group).map(function (key) {
|
|
290
|
-
let arr = group[key];
|
|
291
|
-
arr.key = key;
|
|
292
|
-
return arr;
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
},
|
|
296
|
-
__cc_extended: {
|
|
297
|
-
value: true
|
|
298
|
-
}
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
!Array.prototype.__cc_extended && Object.defineProperties(Array.prototype, {
|
|
3
|
+
remove: {
|
|
4
|
+
value: function (filter) {
|
|
5
|
+
if (typeof (filter) == 'function') {
|
|
6
|
+
for (let i = this.length - 1; i > -1; --i) {
|
|
7
|
+
filter(this[i], i, this) && this.splice(i, 1);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
for (let i = this.length - 1; i > -1; --i) {
|
|
12
|
+
this[i] === filter && this.splice(i, 1);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
removeOne: {
|
|
19
|
+
value: function (filter) {
|
|
20
|
+
if (typeof (filter) == 'function') {
|
|
21
|
+
for (let i = 0; i < this.length; ++i) {
|
|
22
|
+
if (filter(this[i], i, this)) {
|
|
23
|
+
this.splice(i, 1);
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
for (let i = 0; i < this.length; ++i) {
|
|
30
|
+
if (this[i] === filter) {
|
|
31
|
+
this.splice(i, 1);
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
random: {
|
|
40
|
+
value: function () {
|
|
41
|
+
let element = this[Math.floor(Math.random() * this.length)];
|
|
42
|
+
return element;
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
fastRemoveAt: {
|
|
46
|
+
value: function (index) {
|
|
47
|
+
const length = this.length;
|
|
48
|
+
if (index < 0 || index >= length) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
let res = this[index];
|
|
52
|
+
this[index] = this[length - 1];
|
|
53
|
+
this.length = length - 1;
|
|
54
|
+
return res;
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
fastRemove: {
|
|
58
|
+
value: function (value) {
|
|
59
|
+
const index = this.indexOf(value);
|
|
60
|
+
if (index >= 0) {
|
|
61
|
+
this[index] = this[this.length - 1];
|
|
62
|
+
--this.length;
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
first: {
|
|
69
|
+
value: function () {
|
|
70
|
+
return this.length ? this[0] : null;
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
last: {
|
|
74
|
+
value: function () {
|
|
75
|
+
return this.length ? this[this.length - 1] : null;
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
max: {
|
|
79
|
+
value: function (mapper) {
|
|
80
|
+
if (!this.length) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
function _max(a, b) {
|
|
84
|
+
return a > b ? a : b;
|
|
85
|
+
}
|
|
86
|
+
if (typeof (mapper) == 'function') {
|
|
87
|
+
let max = mapper(this[0], 0, this);
|
|
88
|
+
for (let i = 1; i < this.length; ++i) {
|
|
89
|
+
let temp = mapper(this[i], i, this);
|
|
90
|
+
max = temp > max ? temp : max;
|
|
91
|
+
}
|
|
92
|
+
return max;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
return this.reduce(function (prev, cur) { return _max(prev, cur); });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
min: {
|
|
100
|
+
value: function (mapper) {
|
|
101
|
+
if (!this.length) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
function _min(a, b) {
|
|
105
|
+
return a < b ? a : b;
|
|
106
|
+
}
|
|
107
|
+
if (typeof (mapper) == 'function') {
|
|
108
|
+
let min = mapper(this[0], 0, this);
|
|
109
|
+
for (let i = 1; i < this.length; ++i) {
|
|
110
|
+
let temp = mapper(this[i], i, this);
|
|
111
|
+
min = temp < min ? temp : min;
|
|
112
|
+
}
|
|
113
|
+
return min;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
return this.reduce(function (prev, cur) { return _min(prev, cur); });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
distinct: {
|
|
121
|
+
value: function () {
|
|
122
|
+
return this.filter(function (v, i, arr) { return arr.indexOf(v) === i; });
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
filterIndex: {
|
|
126
|
+
value: function (filter) {
|
|
127
|
+
let output = [];
|
|
128
|
+
for (let i = 0; i < this.length; ++i) {
|
|
129
|
+
if (filter(this[i], i, this)) {
|
|
130
|
+
output.push(i);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return output;
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
count: {
|
|
137
|
+
value: function (filter) {
|
|
138
|
+
let result = 0;
|
|
139
|
+
for (let i = 0; i < this.length; ++i) {
|
|
140
|
+
if (filter(this[i], i, this)) {
|
|
141
|
+
++result;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
sum: {
|
|
148
|
+
value: function (mapper) {
|
|
149
|
+
let result = 0;
|
|
150
|
+
for (let i = 0; i < this.length; ++i) {
|
|
151
|
+
result += mapper ? mapper(this[i], i, this) : this[i];
|
|
152
|
+
}
|
|
153
|
+
return result;
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
average: {
|
|
157
|
+
value: function (mapper) {
|
|
158
|
+
return this.sum(mapper) / this.length;
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
orderBy: {
|
|
162
|
+
value: function () {
|
|
163
|
+
let mappers = [];
|
|
164
|
+
for (let _i = 0; _i < arguments.length; _i++) {
|
|
165
|
+
mappers[_i] = arguments[_i];
|
|
166
|
+
}
|
|
167
|
+
return this.slice().sort(function (a, b) {
|
|
168
|
+
for (let i = 0; i < mappers.length; ++i) {
|
|
169
|
+
let va = mappers[i](a);
|
|
170
|
+
let vb = mappers[i](b);
|
|
171
|
+
if (va > vb) {
|
|
172
|
+
return 1;
|
|
173
|
+
}
|
|
174
|
+
else if (va < vb) {
|
|
175
|
+
return -1;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return 0;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
orderByDesc: {
|
|
183
|
+
value: function () {
|
|
184
|
+
let mappers = [];
|
|
185
|
+
for (let _i = 0; _i < arguments.length; _i++) {
|
|
186
|
+
mappers[_i] = arguments[_i];
|
|
187
|
+
}
|
|
188
|
+
return this.slice().sort(function (a, b) {
|
|
189
|
+
for (let i = 0; i < mappers.length; ++i) {
|
|
190
|
+
let va = mappers[i](a);
|
|
191
|
+
let vb = mappers[i](b);
|
|
192
|
+
if (va > vb) {
|
|
193
|
+
return -1;
|
|
194
|
+
}
|
|
195
|
+
else if (va < vb) {
|
|
196
|
+
return 1;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return 0;
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
binarySearch: {
|
|
204
|
+
value: function (value, keyMapper) {
|
|
205
|
+
let low = 0, high = this.length - 1;
|
|
206
|
+
while (low <= high) {
|
|
207
|
+
let mid = ((high + low) / 2) | 0;
|
|
208
|
+
let midValue = keyMapper ? keyMapper(this[mid]) : this[mid];
|
|
209
|
+
if (value === midValue) {
|
|
210
|
+
return mid;
|
|
211
|
+
}
|
|
212
|
+
else if (value > midValue) {
|
|
213
|
+
low = mid + 1;
|
|
214
|
+
}
|
|
215
|
+
else if (value < midValue) {
|
|
216
|
+
high = mid - 1;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return -1;
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
binaryInsert: {
|
|
223
|
+
value: function (item, keyMapper, unique) {
|
|
224
|
+
if (typeof (keyMapper) == 'boolean') {
|
|
225
|
+
unique = keyMapper;
|
|
226
|
+
keyMapper = undefined;
|
|
227
|
+
}
|
|
228
|
+
let low = 0, high = this.length - 1;
|
|
229
|
+
let mid = NaN;
|
|
230
|
+
let itemValue = keyMapper ? keyMapper(item) : item;
|
|
231
|
+
while (low <= high) {
|
|
232
|
+
mid = ((high + low) / 2) | 0;
|
|
233
|
+
let midValue = keyMapper ? keyMapper(this[mid]) : this[mid];
|
|
234
|
+
if (itemValue === midValue) {
|
|
235
|
+
if (unique) {
|
|
236
|
+
return mid;
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
else if (itemValue > midValue) {
|
|
243
|
+
low = mid + 1;
|
|
244
|
+
}
|
|
245
|
+
else if (itemValue < midValue) {
|
|
246
|
+
high = mid - 1;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
let index = low > mid ? mid + 1 : mid;
|
|
250
|
+
this.splice(index, 0, item);
|
|
251
|
+
return index;
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
binaryDistinct: {
|
|
255
|
+
value: function (keyMapper) {
|
|
256
|
+
return this.filter(function (v, i, arr) { return arr.binarySearch(v, keyMapper) === i; });
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
findLast: {
|
|
260
|
+
value: function (predicate) {
|
|
261
|
+
for (let i = this.length - 1; i > -1; --i) {
|
|
262
|
+
if (predicate(this[i], i, this)) {
|
|
263
|
+
return this[i];
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return undefined;
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
findLastIndex: {
|
|
270
|
+
value: function (predicate) {
|
|
271
|
+
for (let i = this.length - 1; i > -1; --i) {
|
|
272
|
+
if (predicate(this[i], i, this)) {
|
|
273
|
+
return i;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return -1;
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
groupBy: {
|
|
280
|
+
value: function (grouper) {
|
|
281
|
+
let group = this.reduce(function (prev, next) {
|
|
282
|
+
let groupKey = grouper(next);
|
|
283
|
+
if (!prev[groupKey]) {
|
|
284
|
+
prev[groupKey] = [];
|
|
285
|
+
}
|
|
286
|
+
prev[groupKey].push(next);
|
|
287
|
+
return prev;
|
|
288
|
+
}, {});
|
|
289
|
+
return Object.keys(group).map(function (key) {
|
|
290
|
+
let arr = group[key];
|
|
291
|
+
arr.key = key;
|
|
292
|
+
return arr;
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
__cc_extended: {
|
|
297
|
+
value: true
|
|
298
|
+
}
|
|
299
299
|
});
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
/** 数组工具 */
|
|
2
|
-
export declare class ArrayUtil {
|
|
3
|
-
/**
|
|
4
|
-
* 数组去重,并创建一个新数组返回
|
|
5
|
-
* @param arr 源数组
|
|
6
|
-
*/
|
|
7
|
-
static noRepeated(arr: any[]): any[];
|
|
8
|
-
/**
|
|
9
|
-
* 复制二维数组
|
|
10
|
-
* @param array 目标数组
|
|
11
|
-
*/
|
|
12
|
-
static copy2DArray(array: any[][]): any[][];
|
|
13
|
-
/**
|
|
14
|
-
* Fisher-Yates Shuffle 随机置乱算法
|
|
15
|
-
* @param array 目标数组
|
|
16
|
-
*/
|
|
17
|
-
static fisherYatesShuffle(array: any[]): any[];
|
|
18
|
-
/**
|
|
19
|
-
* 混淆数组
|
|
20
|
-
* @param array 目标数组
|
|
21
|
-
*/
|
|
22
|
-
static confound(array: []): any[];
|
|
23
|
-
/**
|
|
24
|
-
* 数组扁平化
|
|
25
|
-
* @param array 目标数组
|
|
26
|
-
*/
|
|
27
|
-
static flattening(array: any[]): any[];
|
|
28
|
-
/** 删除数组中指定项 */
|
|
29
|
-
static removeItem(array: any[], item: any): void;
|
|
30
|
-
/**
|
|
31
|
-
* 合并数组
|
|
32
|
-
* @param array1 目标数组1
|
|
33
|
-
* @param array2 目标数组2
|
|
34
|
-
*/
|
|
35
|
-
static combineArrays(array1: any[], array2: any[]): any[];
|
|
36
|
-
/**
|
|
37
|
-
* 获取随机数组成员
|
|
38
|
-
* @param array 目标数组
|
|
39
|
-
*/
|
|
40
|
-
static getRandomValueInArray(array: any[]): any;
|
|
41
|
-
}
|
|
1
|
+
/** 数组工具 */
|
|
2
|
+
export declare class ArrayUtil {
|
|
3
|
+
/**
|
|
4
|
+
* 数组去重,并创建一个新数组返回
|
|
5
|
+
* @param arr 源数组
|
|
6
|
+
*/
|
|
7
|
+
static noRepeated(arr: any[]): any[];
|
|
8
|
+
/**
|
|
9
|
+
* 复制二维数组
|
|
10
|
+
* @param array 目标数组
|
|
11
|
+
*/
|
|
12
|
+
static copy2DArray(array: any[][]): any[][];
|
|
13
|
+
/**
|
|
14
|
+
* Fisher-Yates Shuffle 随机置乱算法
|
|
15
|
+
* @param array 目标数组
|
|
16
|
+
*/
|
|
17
|
+
static fisherYatesShuffle(array: any[]): any[];
|
|
18
|
+
/**
|
|
19
|
+
* 混淆数组
|
|
20
|
+
* @param array 目标数组
|
|
21
|
+
*/
|
|
22
|
+
static confound(array: []): any[];
|
|
23
|
+
/**
|
|
24
|
+
* 数组扁平化
|
|
25
|
+
* @param array 目标数组
|
|
26
|
+
*/
|
|
27
|
+
static flattening(array: any[]): any[];
|
|
28
|
+
/** 删除数组中指定项 */
|
|
29
|
+
static removeItem(array: any[], item: any): void;
|
|
30
|
+
/**
|
|
31
|
+
* 合并数组
|
|
32
|
+
* @param array1 目标数组1
|
|
33
|
+
* @param array2 目标数组2
|
|
34
|
+
*/
|
|
35
|
+
static combineArrays(array1: any[], array2: any[]): any[];
|
|
36
|
+
/**
|
|
37
|
+
* 获取随机数组成员
|
|
38
|
+
* @param array 目标数组
|
|
39
|
+
*/
|
|
40
|
+
static getRandomValueInArray(array: any[]): any;
|
|
41
|
+
}
|