ut2 1.6.0 → 1.7.0

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.
Files changed (99) hide show
  1. package/README.md +10 -0
  2. package/dist/ut2.js +189 -84
  3. package/dist/ut2.js.map +1 -1
  4. package/dist/ut2.min.js +1 -1
  5. package/dist/ut2.min.js.map +1 -1
  6. package/es/countBy.js +11 -13
  7. package/es/difference.js +2 -0
  8. package/es/every.js +16 -0
  9. package/es/filter.js +15 -0
  10. package/es/find.js +16 -0
  11. package/es/forEach.js +6 -0
  12. package/es/forEachRight.js +6 -0
  13. package/es/groupBy.js +13 -13
  14. package/es/index.js +10 -0
  15. package/es/internals/createExtremum.js +8 -18
  16. package/es/internals/createForEach.js +23 -0
  17. package/es/internals/createReduce.js +29 -0
  18. package/es/internals/helpers.js +1 -1
  19. package/es/intersection.js +2 -0
  20. package/es/isEmpty.js +1 -1
  21. package/es/keyBy.js +8 -8
  22. package/es/keys.js +11 -0
  23. package/es/map.js +13 -0
  24. package/es/merge.js +7 -6
  25. package/es/orderBy.js +9 -9
  26. package/es/partition.js +7 -7
  27. package/es/reduce.js +6 -0
  28. package/es/reduceRight.js +6 -0
  29. package/es/some.js +16 -0
  30. package/es/uniq.js +5 -13
  31. package/es/xor.js +2 -0
  32. package/lib/countBy.js +11 -13
  33. package/lib/difference.js +2 -0
  34. package/lib/every.js +18 -0
  35. package/lib/filter.js +17 -0
  36. package/lib/find.js +18 -0
  37. package/lib/forEach.js +8 -0
  38. package/lib/forEachRight.js +8 -0
  39. package/lib/groupBy.js +13 -13
  40. package/lib/index.js +20 -0
  41. package/lib/internals/createExtremum.js +8 -18
  42. package/lib/internals/createForEach.js +25 -0
  43. package/lib/internals/createReduce.js +31 -0
  44. package/lib/internals/helpers.js +1 -1
  45. package/lib/intersection.js +2 -0
  46. package/lib/isEmpty.js +2 -2
  47. package/lib/keyBy.js +8 -8
  48. package/lib/keys.js +13 -0
  49. package/lib/map.js +15 -0
  50. package/lib/merge.js +7 -6
  51. package/lib/orderBy.js +9 -9
  52. package/lib/partition.js +7 -7
  53. package/lib/reduce.js +8 -0
  54. package/lib/reduceRight.js +8 -0
  55. package/lib/some.js +18 -0
  56. package/lib/uniq.js +5 -13
  57. package/lib/xor.js +2 -0
  58. package/package.json +1 -1
  59. package/types/allKeys.d.ts +1 -1
  60. package/types/allKeysIn.d.ts +1 -1
  61. package/types/conformsTo.d.ts +2 -1
  62. package/types/countBy.d.ts +3 -24
  63. package/types/difference.d.ts +3 -2
  64. package/types/every.d.ts +6 -0
  65. package/types/filter.d.ts +6 -0
  66. package/types/find.d.ts +6 -0
  67. package/types/forEach.d.ts +36 -0
  68. package/types/forEachRight.d.ts +36 -0
  69. package/types/groupBy.d.ts +3 -24
  70. package/types/index.d.ts +10 -0
  71. package/types/internals/compare.d.ts +2 -1
  72. package/types/internals/createExtremum.d.ts +2 -1
  73. package/types/internals/createForEach.d.ts +15 -0
  74. package/types/internals/createIteratee.d.ts +2 -2
  75. package/types/internals/createReduce.d.ts +19 -0
  76. package/types/intersection.d.ts +3 -2
  77. package/types/isArrayBuffer.d.ts +1 -1
  78. package/types/isArrayLike.d.ts +1 -1
  79. package/types/isError.d.ts +1 -1
  80. package/types/isWeakMap.d.ts +1 -1
  81. package/types/isWeakSet.d.ts +1 -1
  82. package/types/keyBy.d.ts +3 -24
  83. package/types/keys.d.ts +24 -0
  84. package/types/keysIn.d.ts +1 -1
  85. package/types/map.d.ts +6 -0
  86. package/types/max.d.ts +3 -2
  87. package/types/merge.d.ts +6 -2
  88. package/types/min.d.ts +3 -2
  89. package/types/orderBy.d.ts +3 -39
  90. package/types/partition.d.ts +3 -34
  91. package/types/reduce.d.ts +38 -0
  92. package/types/reduceRight.d.ts +38 -0
  93. package/types/some.d.ts +6 -0
  94. package/types/union.d.ts +2 -1
  95. package/types/uniq.d.ts +2 -1
  96. package/types/xor.d.ts +3 -2
  97. /package/es/internals/{keys.js → specialKeys.js} +0 -0
  98. /package/lib/internals/{keys.js → specialKeys.js} +0 -0
  99. /package/types/internals/{keys.d.ts → specialKeys.d.ts} +0 -0
package/README.md CHANGED
@@ -75,10 +75,19 @@ const debounced = debounce(() => {
75
75
  - zip - 数组参数分组。
76
76
  - Collection 集合
77
77
  - countBy - 统计数量。
78
+ - every - 检查集合元素都为真值。
79
+ - find - 查找集合元素。
80
+ - filter - 过滤集合元素。
81
+ - forEach - 迭代集合元素。
82
+ - forEachRight - 迭代集合元素(从右往左的顺序)。
78
83
  - groupBy - 对象分组。
79
84
  - keyBy - 转为对象。
85
+ - map - 迭代集合元素生成新数组。
80
86
  - orderBy - 排序。
81
87
  - partition - 拆分真值和假值。
88
+ - reduce - 累计值(从右往左的顺序)。
89
+ - reduceRight - 累计值。
90
+ - some - 检查集合元素包含真值。
82
91
  - Function 函数
83
92
  - after - 调用 `n` 或更多次之后触发。
84
93
  - before - 调用次数少于 `n` 次之前触发。
@@ -140,6 +149,7 @@ const debounced = debounce(() => {
140
149
  - Object 对象
141
150
  - allKeys - 对象自身的可枚举属性(包含 `Symbol` 属性)。
142
151
  - allKeysIn - 对象自身及继承的可枚举属性(包含 `Symbol` 属性)。
152
+ - keys - 对象自身的可枚举属性(不包含 `Symbol` 属性)。
143
153
  - keysIn - 对象自身及继承的可枚举属性(不包含 `Symbol` 属性)。
144
154
  - merge - 递归对象或数组进行合并。
145
155
  - omit - 排除部分属性。
package/dist/ut2.js CHANGED
@@ -161,6 +161,7 @@
161
161
  }
162
162
 
163
163
  function difference(array, values, iteratee, strictCheck) {
164
+ if (iteratee === void 0) { iteratee = identity; }
164
165
  if (strictCheck === void 0) { strictCheck = false; }
165
166
  if (!isArray(array)) {
166
167
  return [];
@@ -187,6 +188,7 @@
187
188
  }
188
189
 
189
190
  function intersection(array, other, iteratee, strictCheck) {
191
+ if (iteratee === void 0) { iteratee = identity; }
190
192
  if (strictCheck === void 0) { strictCheck = false; }
191
193
  if (!isArray(array) || !isArray(other)) {
192
194
  return [];
@@ -273,27 +275,16 @@
273
275
  return result;
274
276
  }
275
277
 
276
- function isUndefined(value) {
277
- return value === void 0;
278
- }
279
-
280
278
  function uniq(array, iteratee, strickCheck) {
281
279
  if (strickCheck === void 0) { strickCheck = false; }
282
280
  if (!isArray(array)) {
283
281
  return [];
284
282
  }
285
- if (isUndefined(iteratee)) {
286
- return array.filter(function (value, index, arr) {
287
- return arr.findIndex(function (item) { return eq(item, value, strickCheck); }) === index;
288
- });
289
- }
290
- else {
291
- var internalIteratee_1 = createIteratee(iteratee);
292
- return array.filter(function (value, index, arr) {
293
- var current = internalIteratee_1(value);
294
- return arr.findIndex(function (item) { return eq(internalIteratee_1(item), current, strickCheck); }) === index;
295
- });
296
- }
283
+ var internalIteratee = createIteratee(iteratee);
284
+ return array.filter(function (value, index, arr) {
285
+ var current = internalIteratee(value);
286
+ return arr.findIndex(function (item) { return eq(internalIteratee(item), current, strickCheck); }) === index;
287
+ });
297
288
  }
298
289
 
299
290
  function union(array, other, iteratee, strickCheck) {
@@ -335,6 +326,7 @@
335
326
 
336
327
  function xor(array, other, iteratee, strickCheck) {
337
328
  if (other === void 0) { other = []; }
329
+ if (iteratee === void 0) { iteratee = identity; }
338
330
  if (strickCheck === void 0) { strickCheck = false; }
339
331
  if (!isArray(array) && !isArray(other)) {
340
332
  return [];
@@ -357,49 +349,109 @@
357
349
  return unzip(arrays);
358
350
  }
359
351
 
360
- function countBy(collection, iteratee) {
361
- var result = {};
362
- if (isArray(collection)) {
363
- var internalIteratee_1 = createIteratee(iteratee);
364
- collection.forEach(function (item) {
365
- var key = internalIteratee_1(item);
366
- if (key in result) {
367
- ++result[key];
368
- }
369
- else {
370
- result[key] = 1;
352
+ function keys$1(object) {
353
+ if (!isObject(object)) {
354
+ return [];
355
+ }
356
+ return objectKeys(object);
357
+ }
358
+
359
+ function createForEach(dir) {
360
+ function forEach(collection, iteratee) {
361
+ if (iteratee === void 0) { iteratee = identity; }
362
+ var _keys = !isArrayLike(collection) && keys$1(collection);
363
+ var len = (_keys || collection).length;
364
+ var i = dir > 0 ? 0 : len - 1;
365
+ while (i >= 0 && i < len) {
366
+ var currentKey = _keys ? _keys[i] : i;
367
+ if (iteratee(collection[currentKey], currentKey, collection) === false) {
368
+ break;
371
369
  }
372
- });
370
+ i += dir;
371
+ }
372
+ return collection;
373
373
  }
374
+ return forEach;
375
+ }
376
+
377
+ var forEach = createForEach(1);
378
+
379
+ function countBy(collection, iteratee) {
380
+ var result = {};
381
+ var internalIteratee = createIteratee(iteratee);
382
+ forEach(collection, function (item) {
383
+ var key = internalIteratee(item);
384
+ if (key in result) {
385
+ ++result[key];
386
+ }
387
+ else {
388
+ result[key] = 1;
389
+ }
390
+ });
374
391
  return result;
375
392
  }
376
393
 
394
+ function every(collection, predicate) {
395
+ if (predicate === void 0) { predicate = identity; }
396
+ var result = true;
397
+ forEach(collection, function (item, index, arr) {
398
+ if (!predicate(item, index, arr)) {
399
+ result = false;
400
+ return false;
401
+ }
402
+ });
403
+ return result;
404
+ }
405
+
406
+ function find(collection, predicate) {
407
+ if (predicate === void 0) { predicate = identity; }
408
+ var result;
409
+ forEach(collection, function (item, index, arr) {
410
+ if (predicate(item, index, arr)) {
411
+ result = item;
412
+ return false;
413
+ }
414
+ });
415
+ return result;
416
+ }
417
+
418
+ function filter(array, predicate) {
419
+ if (predicate === void 0) { predicate = identity; }
420
+ var results = [];
421
+ forEach(array, function (item, index) {
422
+ if (predicate(item, index, array)) {
423
+ results.push(item);
424
+ }
425
+ });
426
+ return results;
427
+ }
428
+
429
+ var forEachRight = createForEach(-1);
430
+
377
431
  function groupBy(collection, iteratee) {
432
+ if (iteratee === void 0) { iteratee = identity; }
378
433
  var result = {};
379
- if (isArray(collection)) {
380
- var internalIteratee_1 = createIteratee(iteratee);
381
- collection.forEach(function (item) {
382
- var key = internalIteratee_1(item);
383
- if (key in result) {
384
- result[key].push(item);
385
- }
386
- else {
387
- result[key] = [item];
388
- }
389
- });
390
- }
434
+ var internalIteratee = createIteratee(iteratee);
435
+ forEach(collection, function (item) {
436
+ var key = internalIteratee(item);
437
+ if (key in result) {
438
+ result[key].push(item);
439
+ }
440
+ else {
441
+ result[key] = [item];
442
+ }
443
+ });
391
444
  return result;
392
445
  }
393
446
 
394
447
  function keyBy(collection, iteratee) {
448
+ if (iteratee === void 0) { iteratee = identity; }
395
449
  var result = {};
396
- if (isArray(collection)) {
397
- var internalIteratee_1 = createIteratee(iteratee);
398
- collection.forEach(function (item) {
399
- var key = internalIteratee_1(item);
400
- result[key] = item;
401
- });
402
- }
450
+ var internalIteratee = createIteratee(iteratee);
451
+ forEach(collection, function (item) {
452
+ var key = internalIteratee(item);
453
+ result[key] = item;
454
+ });
403
455
  return result;
404
456
  }
405
457
 
@@ -471,27 +523,74 @@
471
523
  var result = [];
472
524
  iteratees = (isArray(iteratees) ? iteratees : iteratees !== undefined ? [iteratees] : [identity]);
473
525
  orders = (isArray(orders) ? orders : orders !== undefined ? [orders] : []);
474
- if (isArray(collection)) {
475
- collection.forEach(function (item, index) {
476
- var criteria = iteratees.map(function (iteratee) { return createIteratee(iteratee)(item); });
477
- result.push({
478
- criteria: criteria,
479
- index: index,
480
- value: item
481
- });
526
+ var index = -1;
527
+ forEach(collection, function (item) {
528
+ var criteria = iteratees.map(function (iteratee) { return createIteratee(iteratee)(item); });
529
+ result.push({
530
+ criteria: criteria,
531
+ index: ++index,
532
+ value: item
482
533
  });
483
- }
534
+ });
484
535
  return result.sort(function (a, b) { return compareMultiple(a, b, orders); }).map(function (item) { return item.value; });
485
536
  }
486
537
 
538
+ function map(collection, iteratee) {
539
+ if (iteratee === void 0) { iteratee = identity; }
540
+ var result = [];
541
+ forEach(collection, function (item, index, arr) {
542
+ result.push(iteratee(item, index, arr));
543
+ });
544
+ return result;
545
+ }
546
+
487
547
  function partition(collection, predicate) {
548
+ if (predicate === void 0) { predicate = identity; }
488
549
  var result = [[], []];
489
- if (isArray(collection)) {
490
- var internalIteratee_1 = createIteratee(predicate);
491
- collection.forEach(function (item) {
492
- result[internalIteratee_1(item) ? 0 : 1].push(item);
493
- });
550
+ var internalIteratee = createIteratee(predicate);
551
+ forEach(collection, function (item) {
552
+ result[internalIteratee(item) ? 0 : 1].push(item);
553
+ });
554
+ return result;
555
+ }
556
+
557
+ function createReduce(dir) {
558
+ function reducer(collection, iteratee, memo, initial) {
559
+ var _keys = !isArrayLike(collection) && keys$1(collection);
560
+ var len = (_keys || collection).length;
561
+ var i = dir > 0 ? 0 : len - 1;
562
+ if (!initial && len > 0) {
563
+ memo = collection[_keys ? _keys[i] : i];
564
+ i += dir;
565
+ }
566
+ while (i >= 0 && i < len) {
567
+ var currentKey = _keys ? _keys[i] : i;
568
+ memo = iteratee(memo, collection[currentKey], currentKey, collection);
569
+ i += dir;
570
+ }
571
+ return memo;
572
+ }
573
+ function reduce(collection, iteratee, initialValue) {
574
+ if (iteratee === void 0) { iteratee = identity; }
575
+ var initial = arguments.length >= 3;
576
+ return reducer(collection, iteratee, initialValue, initial);
494
577
  }
578
+ return reduce;
579
+ }
580
+
581
+ var reduce = createReduce(1);
582
+
583
+ var reduceRight = createReduce(-1);
584
+
585
+ function some(collection, predicate) {
586
+ if (predicate === void 0) { predicate = identity; }
587
+ var result = false;
588
+ forEach(collection, function (item, index, arr) {
589
+ if (predicate(item, index, arr)) {
590
+ result = true;
591
+ return false;
592
+ }
593
+ });
495
594
  return result;
496
595
  }
497
596
 
@@ -499,7 +598,7 @@
499
598
  return value == null || value !== value ? defaultValue : value;
500
599
  }
501
600
 
502
- var VERSION = "1.6.0";
601
+ var VERSION = "1.7.0";
503
602
  var supportedArgumentsType = getTag((function () { return arguments; })()) === argumentsTag;
504
603
  var FUNC_ERROR_TEXT = 'Expected a function';
505
604
  function toSource(func) {
@@ -1172,6 +1271,10 @@
1172
1271
  return typeof value === 'string' || getTag(value) === stringTag;
1173
1272
  }
1174
1273
 
1274
+ function isUndefined(value) {
1275
+ return value === void 0;
1276
+ }
1277
+
1175
1278
  function isWeakMap(value) {
1176
1279
  return getTagWithBugfix$1(value) === weakMapTag;
1177
1280
  }
@@ -1229,23 +1332,14 @@
1229
1332
  return;
1230
1333
  }
1231
1334
  var result, computed;
1232
- if (isUndefined(iteratee)) {
1233
- array.forEach(function (value) {
1234
- if (value != null && (result === undefined ? value === value && !isSymbol(value) : comparator(value, result))) {
1235
- result = value;
1236
- }
1237
- });
1238
- }
1239
- else {
1240
- var internalIteratee_1 = createIteratee(iteratee);
1241
- array.forEach(function (value) {
1242
- var current = internalIteratee_1(value);
1243
- if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {
1244
- computed = current;
1245
- result = value;
1246
- }
1247
- });
1248
- }
1335
+ var internalIteratee = createIteratee(iteratee);
1336
+ array.forEach(function (value) {
1337
+ var current = internalIteratee(value);
1338
+ if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {
1339
+ computed = current;
1340
+ result = value;
1341
+ }
1342
+ });
1249
1343
  return result;
1250
1344
  }
1251
1345
 
@@ -1338,13 +1432,13 @@
1338
1432
  return getKeysIn(object);
1339
1433
  }
1340
1434
 
1341
- function baseMerge(object, source, customizer, stack) {
1435
+ function baseMerge(object, source, getKeys, customizer, stack) {
1342
1436
  if (stack === void 0) { stack = new WeakMap(); }
1343
1437
  var obj = Object(object);
1344
1438
  if (!isObject(source) || obj === source) {
1345
1439
  return obj;
1346
1440
  }
1347
- var keys = allKeysIn(source);
1441
+ var keys = getKeys(source);
1348
1442
  var hasCustomizer = typeof customizer === 'function';
1349
1443
  keys.forEach(function (key) {
1350
1444
  var srcValue = source[key];
@@ -1370,7 +1464,7 @@
1370
1464
  }
1371
1465
  }
1372
1466
  if (newObjValue) {
1373
- obj[key] = baseMerge(newObjValue, srcValue, customizer, stack);
1467
+ obj[key] = baseMerge(newObjValue, srcValue, getKeys, customizer, stack);
1374
1468
  }
1375
1469
  else if (srcValue !== undefined || !(key in obj)) {
1376
1470
  obj[key] = srcValue;
@@ -1380,8 +1474,9 @@
1380
1474
  });
1381
1475
  return obj;
1382
1476
  }
1383
- function merge(object, source, customizer) {
1384
- return baseMerge(object, source, customizer);
1477
+ function merge(object, source, customizer, getKeys) {
1478
+ if (getKeys === void 0) { getKeys = keysIn; }
1479
+ return baseMerge(object, source, getKeys, customizer);
1385
1480
  }
1386
1481
 
1387
1482
  function castArray(value) {
@@ -1677,7 +1772,12 @@
1677
1772
  exports.eq = eq;
1678
1773
  exports.escape = escape;
1679
1774
  exports.escapeRegExp = escapeRegExp;
1775
+ exports.every = every;
1776
+ exports.filter = filter;
1777
+ exports.find = find;
1680
1778
  exports.floor = floor;
1779
+ exports.forEach = forEach;
1780
+ exports.forEachRight = forEachRight;
1681
1781
  exports.fromPairs = fromPairs;
1682
1782
  exports.groupBy = groupBy;
1683
1783
  exports.gt = gt;
@@ -1724,11 +1824,13 @@
1724
1824
  exports.isWeakSet = isWeakSet;
1725
1825
  exports.kebabCase = kebabCase;
1726
1826
  exports.keyBy = keyBy;
1827
+ exports.keys = keys$1;
1727
1828
  exports.keysIn = keysIn;
1728
1829
  exports.lowerCase = lowerCase;
1729
1830
  exports.lowerFirst = lowerFirst;
1730
1831
  exports.lt = lt;
1731
1832
  exports.lte = lte;
1833
+ exports.map = map;
1732
1834
  exports.max = max;
1733
1835
  exports.merge = merge;
1734
1836
  exports.min = min;
@@ -1747,10 +1849,13 @@
1747
1849
  exports.random = random;
1748
1850
  exports.randomInt = randomInt;
1749
1851
  exports.range = range;
1852
+ exports.reduce = reduce;
1853
+ exports.reduceRight = reduceRight;
1750
1854
  exports.round = round;
1751
1855
  exports.shuffle = shuffle;
1752
1856
  exports.sleep = sleep;
1753
1857
  exports.snakeCase = snakeCase;
1858
+ exports.some = some;
1754
1859
  exports.throttle = throttle;
1755
1860
  exports.times = times;
1756
1861
  exports.toFinite = toFinite;