ut2 1.6.0 → 1.7.1
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/README.md +10 -0
- package/dist/ut2.js +189 -84
- package/dist/ut2.js.map +1 -1
- package/dist/ut2.min.js +1 -1
- package/dist/ut2.min.js.map +1 -1
- package/es/countBy.js +11 -13
- package/es/difference.js +2 -0
- package/es/every.js +16 -0
- package/es/filter.js +15 -0
- package/es/find.js +16 -0
- package/es/forEach.js +6 -0
- package/es/forEachRight.js +6 -0
- package/es/groupBy.js +13 -13
- package/es/index.js +10 -0
- package/es/internals/createExtremum.js +8 -18
- package/es/internals/createForEach.js +23 -0
- package/es/internals/createReduce.js +29 -0
- package/es/internals/helpers.js +1 -1
- package/es/intersection.js +2 -0
- package/es/isEmpty.js +1 -1
- package/es/keyBy.js +8 -8
- package/es/keys.js +11 -0
- package/es/map.js +13 -0
- package/es/merge.js +7 -6
- package/es/orderBy.js +9 -9
- package/es/partition.js +7 -7
- package/es/reduce.js +6 -0
- package/es/reduceRight.js +6 -0
- package/es/some.js +16 -0
- package/es/uniq.js +5 -13
- package/es/xor.js +2 -0
- package/lib/countBy.js +11 -13
- package/lib/difference.js +2 -0
- package/lib/every.js +18 -0
- package/lib/filter.js +17 -0
- package/lib/find.js +18 -0
- package/lib/forEach.js +8 -0
- package/lib/forEachRight.js +8 -0
- package/lib/groupBy.js +13 -13
- package/lib/index.js +20 -0
- package/lib/internals/createExtremum.js +8 -18
- package/lib/internals/createForEach.js +25 -0
- package/lib/internals/createReduce.js +31 -0
- package/lib/internals/helpers.js +1 -1
- package/lib/intersection.js +2 -0
- package/lib/isEmpty.js +2 -2
- package/lib/keyBy.js +8 -8
- package/lib/keys.js +13 -0
- package/lib/map.js +15 -0
- package/lib/merge.js +7 -6
- package/lib/orderBy.js +9 -9
- package/lib/partition.js +7 -7
- package/lib/reduce.js +8 -0
- package/lib/reduceRight.js +8 -0
- package/lib/some.js +18 -0
- package/lib/uniq.js +5 -13
- package/lib/xor.js +2 -0
- package/package.json +1 -1
- package/types/allKeys.d.ts +1 -1
- package/types/allKeysIn.d.ts +1 -1
- package/types/conformsTo.d.ts +2 -1
- package/types/countBy.d.ts +3 -24
- package/types/difference.d.ts +3 -2
- package/types/every.d.ts +6 -0
- package/types/filter.d.ts +6 -0
- package/types/find.d.ts +6 -0
- package/types/forEach.d.ts +36 -0
- package/types/forEachRight.d.ts +36 -0
- package/types/groupBy.d.ts +3 -24
- package/types/index.d.ts +10 -0
- package/types/internals/compare.d.ts +2 -1
- package/types/internals/createExtremum.d.ts +2 -1
- package/types/internals/createForEach.d.ts +15 -0
- package/types/internals/createIteratee.d.ts +2 -2
- package/types/internals/createReduce.d.ts +19 -0
- package/types/internals/types.d.ts +28 -0
- package/types/intersection.d.ts +3 -2
- package/types/isArrayBuffer.d.ts +1 -1
- package/types/isArrayLike.d.ts +1 -1
- package/types/isError.d.ts +1 -1
- package/types/isWeakMap.d.ts +1 -1
- package/types/isWeakSet.d.ts +1 -1
- package/types/keyBy.d.ts +3 -24
- package/types/keys.d.ts +24 -0
- package/types/keysIn.d.ts +1 -1
- package/types/map.d.ts +6 -0
- package/types/max.d.ts +3 -2
- package/types/merge.d.ts +8 -2
- package/types/min.d.ts +3 -2
- package/types/orderBy.d.ts +3 -39
- package/types/partition.d.ts +3 -34
- package/types/reduce.d.ts +38 -0
- package/types/reduceRight.d.ts +38 -0
- package/types/some.d.ts +6 -0
- package/types/union.d.ts +2 -1
- package/types/uniq.d.ts +2 -1
- package/types/xor.d.ts +3 -2
- /package/es/internals/{keys.js → specialKeys.js} +0 -0
- /package/lib/internals/{keys.js → specialKeys.js} +0 -0
- /package/types/internals/{keys.d.ts → specialKeys.d.ts} +0 -0
package/lib/groupBy.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
3
5
|
var createIteratee = require('./internals/createIteratee.js');
|
|
4
|
-
var isArray = require('./isArray.js');
|
|
5
6
|
|
|
6
7
|
function groupBy(collection, iteratee) {
|
|
8
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
7
9
|
var result = {};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
});
|
|
19
|
-
}
|
|
10
|
+
var internalIteratee = createIteratee(iteratee);
|
|
11
|
+
forEach(collection, function (item) {
|
|
12
|
+
var key = internalIteratee(item);
|
|
13
|
+
if (key in result) {
|
|
14
|
+
result[key].push(item);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
result[key] = [item];
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
20
|
return result;
|
|
21
21
|
}
|
|
22
22
|
|
package/lib/index.js
CHANGED
|
@@ -13,10 +13,19 @@ var unzip = require('./unzip.js');
|
|
|
13
13
|
var xor = require('./xor.js');
|
|
14
14
|
var zip = require('./zip.js');
|
|
15
15
|
var countBy = require('./countBy.js');
|
|
16
|
+
var every = require('./every.js');
|
|
17
|
+
var find = require('./find.js');
|
|
18
|
+
var filter = require('./filter.js');
|
|
19
|
+
var forEach = require('./forEach.js');
|
|
20
|
+
var forEachRight = require('./forEachRight.js');
|
|
16
21
|
var groupBy = require('./groupBy.js');
|
|
17
22
|
var keyBy = require('./keyBy.js');
|
|
18
23
|
var orderBy = require('./orderBy.js');
|
|
24
|
+
var map = require('./map.js');
|
|
19
25
|
var partition = require('./partition.js');
|
|
26
|
+
var reduce = require('./reduce.js');
|
|
27
|
+
var reduceRight = require('./reduceRight.js');
|
|
28
|
+
var some = require('./some.js');
|
|
20
29
|
var after = require('./after.js');
|
|
21
30
|
var before = require('./before.js');
|
|
22
31
|
var debounce = require('./debounce.js');
|
|
@@ -73,6 +82,7 @@ var random = require('./random.js');
|
|
|
73
82
|
var randomInt = require('./randomInt.js');
|
|
74
83
|
var allKeys = require('./allKeys.js');
|
|
75
84
|
var allKeysIn = require('./allKeysIn.js');
|
|
85
|
+
var keys = require('./keys.js');
|
|
76
86
|
var keysIn = require('./keysIn.js');
|
|
77
87
|
var merge = require('./merge.js');
|
|
78
88
|
var omit = require('./omit.js');
|
|
@@ -132,10 +142,19 @@ exports.unzip = unzip;
|
|
|
132
142
|
exports.xor = xor;
|
|
133
143
|
exports.zip = zip;
|
|
134
144
|
exports.countBy = countBy;
|
|
145
|
+
exports.every = every;
|
|
146
|
+
exports.find = find;
|
|
147
|
+
exports.filter = filter;
|
|
148
|
+
exports.forEach = forEach;
|
|
149
|
+
exports.forEachRight = forEachRight;
|
|
135
150
|
exports.groupBy = groupBy;
|
|
136
151
|
exports.keyBy = keyBy;
|
|
137
152
|
exports.orderBy = orderBy;
|
|
153
|
+
exports.map = map;
|
|
138
154
|
exports.partition = partition;
|
|
155
|
+
exports.reduce = reduce;
|
|
156
|
+
exports.reduceRight = reduceRight;
|
|
157
|
+
exports.some = some;
|
|
139
158
|
exports.after = after;
|
|
140
159
|
exports.before = before;
|
|
141
160
|
exports.debounce = debounce;
|
|
@@ -192,6 +211,7 @@ exports.random = random;
|
|
|
192
211
|
exports.randomInt = randomInt;
|
|
193
212
|
exports.allKeys = allKeys;
|
|
194
213
|
exports.allKeysIn = allKeysIn;
|
|
214
|
+
exports.keys = keys;
|
|
195
215
|
exports.keysIn = keysIn;
|
|
196
216
|
exports.merge = merge;
|
|
197
217
|
exports.omit = omit;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var isArray = require('../isArray.js');
|
|
4
4
|
var isSymbol = require('../isSymbol.js');
|
|
5
|
-
var isUndefined = require('../isUndefined.js');
|
|
6
5
|
var createIteratee = require('./createIteratee.js');
|
|
7
6
|
|
|
8
7
|
function createExtremum(array, comparator, iteratee) {
|
|
@@ -10,23 +9,14 @@ function createExtremum(array, comparator, iteratee) {
|
|
|
10
9
|
return;
|
|
11
10
|
}
|
|
12
11
|
var result, computed;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
var internalIteratee_1 = createIteratee(iteratee);
|
|
22
|
-
array.forEach(function (value) {
|
|
23
|
-
var current = internalIteratee_1(value);
|
|
24
|
-
if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {
|
|
25
|
-
computed = current;
|
|
26
|
-
result = value;
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
12
|
+
var internalIteratee = createIteratee(iteratee);
|
|
13
|
+
array.forEach(function (value) {
|
|
14
|
+
var current = internalIteratee(value);
|
|
15
|
+
if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {
|
|
16
|
+
computed = current;
|
|
17
|
+
result = value;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
30
20
|
return result;
|
|
31
21
|
}
|
|
32
22
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var identity = require('../identity.js');
|
|
4
|
+
var isArrayLike = require('../isArrayLike.js');
|
|
5
|
+
var keys = require('../keys.js');
|
|
6
|
+
|
|
7
|
+
function createForEach(dir) {
|
|
8
|
+
function forEach(collection, iteratee) {
|
|
9
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
10
|
+
var _keys = !isArrayLike(collection) && keys(collection);
|
|
11
|
+
var len = (_keys || collection).length;
|
|
12
|
+
var i = dir > 0 ? 0 : len - 1;
|
|
13
|
+
while (i >= 0 && i < len) {
|
|
14
|
+
var currentKey = _keys ? _keys[i] : i;
|
|
15
|
+
if (iteratee(collection[currentKey], currentKey, collection) === false) {
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
i += dir;
|
|
19
|
+
}
|
|
20
|
+
return collection;
|
|
21
|
+
}
|
|
22
|
+
return forEach;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
module.exports = createForEach;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var identity = require('../identity.js');
|
|
4
|
+
var isArrayLike = require('../isArrayLike.js');
|
|
5
|
+
var keys = require('../keys.js');
|
|
6
|
+
|
|
7
|
+
function createReduce(dir) {
|
|
8
|
+
function reducer(collection, iteratee, memo, initial) {
|
|
9
|
+
var _keys = !isArrayLike(collection) && keys(collection);
|
|
10
|
+
var len = (_keys || collection).length;
|
|
11
|
+
var i = dir > 0 ? 0 : len - 1;
|
|
12
|
+
if (!initial && len > 0) {
|
|
13
|
+
memo = collection[_keys ? _keys[i] : i];
|
|
14
|
+
i += dir;
|
|
15
|
+
}
|
|
16
|
+
while (i >= 0 && i < len) {
|
|
17
|
+
var currentKey = _keys ? _keys[i] : i;
|
|
18
|
+
memo = iteratee(memo, collection[currentKey], currentKey, collection);
|
|
19
|
+
i += dir;
|
|
20
|
+
}
|
|
21
|
+
return memo;
|
|
22
|
+
}
|
|
23
|
+
function reduce(collection, iteratee, initialValue) {
|
|
24
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
25
|
+
var initial = arguments.length >= 3;
|
|
26
|
+
return reducer(collection, iteratee, initialValue, initial);
|
|
27
|
+
}
|
|
28
|
+
return reduce;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
module.exports = createReduce;
|
package/lib/internals/helpers.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var getTag = require('./getTag.js');
|
|
4
4
|
var native = require('./native.js');
|
|
5
5
|
|
|
6
|
-
exports.VERSION = "1.
|
|
6
|
+
exports.VERSION = "1.7.1";
|
|
7
7
|
exports.supportedArgumentsType = getTag((function () { return arguments; })()) === native.argumentsTag;
|
|
8
8
|
exports.FUNC_ERROR_TEXT = 'Expected a function';
|
|
9
9
|
function toSource(func) {
|
package/lib/intersection.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var eq = require('./eq.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
4
5
|
var createIteratee = require('./internals/createIteratee.js');
|
|
5
6
|
var isArray = require('./isArray.js');
|
|
6
7
|
|
|
7
8
|
function intersection(array, other, iteratee, strictCheck) {
|
|
9
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
8
10
|
if (strictCheck === void 0) { strictCheck = false; }
|
|
9
11
|
if (!isArray(array) || !isArray(other)) {
|
|
10
12
|
return [];
|
package/lib/isEmpty.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var getTag = require('./internals/getTag.js');
|
|
4
|
-
var
|
|
4
|
+
var specialKeys = require('./internals/specialKeys.js');
|
|
5
5
|
var native = require('./internals/native.js');
|
|
6
6
|
var isArrayLike = require('./isArrayLike.js');
|
|
7
7
|
var isNil = require('./isNil.js');
|
|
@@ -16,7 +16,7 @@ function isEmpty(value) {
|
|
|
16
16
|
return !value.size;
|
|
17
17
|
}
|
|
18
18
|
if (isObjectLike(value)) {
|
|
19
|
-
return !
|
|
19
|
+
return !specialKeys(value).length;
|
|
20
20
|
}
|
|
21
21
|
if (isArrayLike(value)) {
|
|
22
22
|
return !value.length;
|
package/lib/keyBy.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
3
5
|
var createIteratee = require('./internals/createIteratee.js');
|
|
4
|
-
var isArray = require('./isArray.js');
|
|
5
6
|
|
|
6
7
|
function keyBy(collection, iteratee) {
|
|
8
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
7
9
|
var result = {};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
});
|
|
14
|
-
}
|
|
10
|
+
var internalIteratee = createIteratee(iteratee);
|
|
11
|
+
forEach(collection, function (item) {
|
|
12
|
+
var key = internalIteratee(item);
|
|
13
|
+
result[key] = item;
|
|
14
|
+
});
|
|
15
15
|
return result;
|
|
16
16
|
}
|
|
17
17
|
|
package/lib/keys.js
ADDED
package/lib/map.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
5
|
+
|
|
6
|
+
function map(collection, iteratee) {
|
|
7
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
8
|
+
var result = [];
|
|
9
|
+
forEach(collection, function (item, index, arr) {
|
|
10
|
+
result.push(iteratee(item, index, arr));
|
|
11
|
+
});
|
|
12
|
+
return result;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
module.exports = map;
|
package/lib/merge.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var keysIn = require('./keysIn.js');
|
|
4
4
|
var isArray = require('./isArray.js');
|
|
5
5
|
var isObject = require('./isObject.js');
|
|
6
6
|
var isObjectLike = require('./isObjectLike.js');
|
|
7
7
|
var isPlainObject = require('./isPlainObject.js');
|
|
8
8
|
|
|
9
|
-
function baseMerge(object, source, customizer, stack) {
|
|
9
|
+
function baseMerge(object, source, getKeys, customizer, stack) {
|
|
10
10
|
if (stack === void 0) { stack = new WeakMap(); }
|
|
11
11
|
var obj = Object(object);
|
|
12
12
|
if (!isObject(source) || obj === source) {
|
|
13
13
|
return obj;
|
|
14
14
|
}
|
|
15
|
-
var keys =
|
|
15
|
+
var keys = getKeys(source);
|
|
16
16
|
var hasCustomizer = typeof customizer === 'function';
|
|
17
17
|
keys.forEach(function (key) {
|
|
18
18
|
var srcValue = source[key];
|
|
@@ -38,7 +38,7 @@ function baseMerge(object, source, customizer, stack) {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
if (newObjValue) {
|
|
41
|
-
obj[key] = baseMerge(newObjValue, srcValue, customizer, stack);
|
|
41
|
+
obj[key] = baseMerge(newObjValue, srcValue, getKeys, customizer, stack);
|
|
42
42
|
}
|
|
43
43
|
else if (srcValue !== undefined || !(key in obj)) {
|
|
44
44
|
obj[key] = srcValue;
|
|
@@ -48,8 +48,9 @@ function baseMerge(object, source, customizer, stack) {
|
|
|
48
48
|
});
|
|
49
49
|
return obj;
|
|
50
50
|
}
|
|
51
|
-
function merge(object, source, customizer) {
|
|
52
|
-
|
|
51
|
+
function merge(object, source, customizer, getKeys) {
|
|
52
|
+
if (getKeys === void 0) { getKeys = keysIn; }
|
|
53
|
+
return baseMerge(object, source, getKeys, customizer);
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
module.exports = merge;
|
package/lib/orderBy.js
CHANGED
|
@@ -4,21 +4,21 @@ var identity = require('./identity.js');
|
|
|
4
4
|
var createIteratee = require('./internals/createIteratee.js');
|
|
5
5
|
var compare = require('./internals/compare.js');
|
|
6
6
|
var isArray = require('./isArray.js');
|
|
7
|
+
var forEach = require('./forEach.js');
|
|
7
8
|
|
|
8
9
|
function orderBy(collection, iteratees, orders) {
|
|
9
10
|
var result = [];
|
|
10
11
|
iteratees = (isArray(iteratees) ? iteratees : iteratees !== undefined ? [iteratees] : [identity]);
|
|
11
12
|
orders = (isArray(orders) ? orders : orders !== undefined ? [orders] : []);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
});
|
|
13
|
+
var index = -1;
|
|
14
|
+
forEach(collection, function (item) {
|
|
15
|
+
var criteria = iteratees.map(function (iteratee) { return createIteratee(iteratee)(item); });
|
|
16
|
+
result.push({
|
|
17
|
+
criteria: criteria,
|
|
18
|
+
index: ++index,
|
|
19
|
+
value: item
|
|
20
20
|
});
|
|
21
|
-
}
|
|
21
|
+
});
|
|
22
22
|
return result.sort(function (a, b) { return compare.compareMultiple(a, b, orders); }).map(function (item) { return item.value; });
|
|
23
23
|
}
|
|
24
24
|
|
package/lib/partition.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
3
5
|
var createIteratee = require('./internals/createIteratee.js');
|
|
4
|
-
var isArray = require('./isArray.js');
|
|
5
6
|
|
|
6
7
|
function partition(collection, predicate) {
|
|
8
|
+
if (predicate === void 0) { predicate = identity; }
|
|
7
9
|
var result = [[], []];
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
});
|
|
13
|
-
}
|
|
10
|
+
var internalIteratee = createIteratee(predicate);
|
|
11
|
+
forEach(collection, function (item) {
|
|
12
|
+
result[internalIteratee(item) ? 0 : 1].push(item);
|
|
13
|
+
});
|
|
14
14
|
return result;
|
|
15
15
|
}
|
|
16
16
|
|
package/lib/reduce.js
ADDED
package/lib/some.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
5
|
+
|
|
6
|
+
function some(collection, predicate) {
|
|
7
|
+
if (predicate === void 0) { predicate = identity; }
|
|
8
|
+
var result = false;
|
|
9
|
+
forEach(collection, function (item, index, arr) {
|
|
10
|
+
if (predicate(item, index, arr)) {
|
|
11
|
+
result = true;
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
module.exports = some;
|
package/lib/uniq.js
CHANGED
|
@@ -3,25 +3,17 @@
|
|
|
3
3
|
var eq = require('./eq.js');
|
|
4
4
|
var createIteratee = require('./internals/createIteratee.js');
|
|
5
5
|
var isArray = require('./isArray.js');
|
|
6
|
-
var isUndefined = require('./isUndefined.js');
|
|
7
6
|
|
|
8
7
|
function uniq(array, iteratee, strickCheck) {
|
|
9
8
|
if (strickCheck === void 0) { strickCheck = false; }
|
|
10
9
|
if (!isArray(array)) {
|
|
11
10
|
return [];
|
|
12
11
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
var internalIteratee_1 = createIteratee(iteratee);
|
|
20
|
-
return array.filter(function (value, index, arr) {
|
|
21
|
-
var current = internalIteratee_1(value);
|
|
22
|
-
return arr.findIndex(function (item) { return eq(internalIteratee_1(item), current, strickCheck); }) === index;
|
|
23
|
-
});
|
|
24
|
-
}
|
|
12
|
+
var internalIteratee = createIteratee(iteratee);
|
|
13
|
+
return array.filter(function (value, index, arr) {
|
|
14
|
+
var current = internalIteratee(value);
|
|
15
|
+
return arr.findIndex(function (item) { return eq(internalIteratee(item), current, strickCheck); }) === index;
|
|
16
|
+
});
|
|
25
17
|
}
|
|
26
18
|
|
|
27
19
|
module.exports = uniq;
|
package/lib/xor.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var difference = require('./difference.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
4
5
|
var createIteratee = require('./internals/createIteratee.js');
|
|
5
6
|
var intersection = require('./intersection.js');
|
|
6
7
|
var isArray = require('./isArray.js');
|
|
@@ -9,6 +10,7 @@ var uniq = require('./uniq.js');
|
|
|
9
10
|
|
|
10
11
|
function xor(array, other, iteratee, strickCheck) {
|
|
11
12
|
if (other === void 0) { other = []; }
|
|
13
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
12
14
|
if (strickCheck === void 0) { strickCheck = false; }
|
|
13
15
|
if (!isArray(array) && !isArray(other)) {
|
|
14
16
|
return [];
|
package/package.json
CHANGED
package/types/allKeys.d.ts
CHANGED
package/types/allKeysIn.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @alias module:Object.allKeysIn
|
|
8
8
|
* @since 1.1.0
|
|
9
9
|
* @param {Object} object 要查询的对象。
|
|
10
|
-
* @returns {Array<string|symbol>}
|
|
10
|
+
* @returns {Array<string|symbol>} 对象自身及继承的可枚举属性(包含 `Symbol` 属性)。
|
|
11
11
|
* @example
|
|
12
12
|
*
|
|
13
13
|
* function Foo(){
|
package/types/conformsTo.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WithNullable } from './internals/types';
|
|
1
2
|
declare function conformsTo<T extends object, K extends keyof T>(object: T, source: Record<K, (value: T[K]) => any>): boolean;
|
|
2
|
-
declare function conformsTo<T extends object
|
|
3
|
+
declare function conformsTo<T extends WithNullable<object>>(object: T, source: Record<string | symbol, (value: any) => any>): boolean;
|
|
3
4
|
export default conformsTo;
|
package/types/countBy.d.ts
CHANGED
|
@@ -1,25 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* `iteratee` 调用时会传入 1 个参数 `value` 。
|
|
5
|
-
*
|
|
6
|
-
* @static
|
|
7
|
-
* @alias module:Collection.countBy
|
|
8
|
-
* @since 1.0.0
|
|
9
|
-
* @param {Array} collection 一个用来迭代的集合。
|
|
10
|
-
* @param {Function | string} [iteratee] 迭代函数,用来转换键。
|
|
11
|
-
* @returns {Object} 组成集合对象。
|
|
12
|
-
* @example
|
|
13
|
-
*
|
|
14
|
-
* countBy([6, 4, 6]); // {'6': 2, '4': 1}
|
|
15
|
-
*
|
|
16
|
-
* countBy([6.1, 4.2, 6.3], Math.floor); // {'6': 2, '4': 1}
|
|
17
|
-
*
|
|
18
|
-
* countBy([{n: 6.1}, {n: 4.2}, {n: 6.3}], item=>Math.floor(item.n)); // {'6': 2, '4': 1}
|
|
19
|
-
*
|
|
20
|
-
* // 迭代函数可以直接写入属性。
|
|
21
|
-
* countBy(['one', 'two', 'three'], 'length'); // {'3': 2, '5': 1}
|
|
22
|
-
*
|
|
23
|
-
*/
|
|
24
|
-
declare function countBy<T, F extends (value: T) => any, K extends keyof T>(collection: T[], iteratee?: F | K): Record<string | number | symbol, number>;
|
|
1
|
+
import { CollectionList, CollectionObject, IterateeParam } from './internals/types';
|
|
2
|
+
declare function countBy<T>(collection: CollectionList<T>, iteratee?: IterateeParam<T>): Record<string, number>;
|
|
3
|
+
declare function countBy<T extends object, V extends T[keyof T]>(collection: CollectionObject<T>, iteratee?: IterateeParam<V>): Record<string, number>;
|
|
25
4
|
export default countBy;
|
package/types/difference.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IterateeParam } from './internals/types';
|
|
1
2
|
/**
|
|
2
3
|
* 创建一个 `array` 排除 `values` 值的新数组。如果传入迭代函数,会调用数组的每个元素以产生唯一性计算的标准。
|
|
3
4
|
*
|
|
@@ -10,7 +11,7 @@
|
|
|
10
11
|
* @since 1.0.0
|
|
11
12
|
* @param {Array} array 要检查的数组。
|
|
12
13
|
* @param {Array} values 排除的值。
|
|
13
|
-
* @param {Function | string} [iteratee] 迭代函数,调用每个元素。
|
|
14
|
+
* @param {Function | string} [iteratee=identity] 迭代函数,调用每个元素。
|
|
14
15
|
* @param {boolean} [strictCheck=false] 严格比较,区分 `0` `-0`,默认 `false` 。
|
|
15
16
|
* @returns {Array} 过滤值后的新数组。
|
|
16
17
|
* @example
|
|
@@ -29,5 +30,5 @@
|
|
|
29
30
|
* difference([-0, 0], [0], undefined, true); // [-0]
|
|
30
31
|
*
|
|
31
32
|
*/
|
|
32
|
-
declare function difference<T
|
|
33
|
+
declare function difference<T>(array: T[], values: any[], iteratee?: IterateeParam<T>, strictCheck?: boolean): T[];
|
|
33
34
|
export default difference;
|
package/types/every.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ArrayIterator, ArrayLikeIterator, ObjectIterator, StringIterator, WithNullable } from './internals/types';
|
|
2
|
+
declare function every<T>(collection: WithNullable<T[]>, predicate?: ArrayIterator<T, any>): boolean;
|
|
3
|
+
declare function every(collection: WithNullable<string>, predicate?: StringIterator<any>): boolean;
|
|
4
|
+
declare function every<T>(collection: WithNullable<ArrayLike<T>>, predicate?: ArrayLikeIterator<T, any>): boolean;
|
|
5
|
+
declare function every<T extends object>(collection: WithNullable<T>, predicate?: ObjectIterator<T, any>): boolean;
|
|
6
|
+
export default every;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ArrayIterator, ArrayLikeIterator, ObjectIterator, StringIterator, WithNullable } from './internals/types';
|
|
2
|
+
declare function filter<T>(collection: WithNullable<T[]>, predicate?: ArrayIterator<T, any>): T[];
|
|
3
|
+
declare function filter(collection: WithNullable<string>, predicate?: StringIterator<any>): string[];
|
|
4
|
+
declare function filter<T>(collection: WithNullable<ArrayLike<T>>, predicate?: ArrayLikeIterator<T, any>): T[];
|
|
5
|
+
declare function filter<T extends object>(collection: WithNullable<T>, predicate?: ObjectIterator<T, any>): Array<T[keyof T]>;
|
|
6
|
+
export default filter;
|
package/types/find.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ArrayIterator, ArrayLikeIterator, ObjectIterator, StringIterator, WithNullable } from './internals/types';
|
|
2
|
+
declare function find<T>(collection: WithNullable<T[]>, predicate?: ArrayIterator<T, any>): T | undefined;
|
|
3
|
+
declare function find(collection: WithNullable<string>, predicate?: StringIterator<any>): string | undefined;
|
|
4
|
+
declare function find<T>(collection: WithNullable<ArrayLike<T>>, predicate?: ArrayLikeIterator<T, any>): T | undefined;
|
|
5
|
+
declare function find<T extends object>(collection: WithNullable<T>, predicate?: ObjectIterator<T, any>): T[keyof T] | undefined;
|
|
6
|
+
export default find;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 迭代集合元素,为每个元素调用 `iteratee` 。
|
|
3
|
+
*
|
|
4
|
+
* `iteratee` 函数可以通过显式返回 `false` 来提前退出迭代。
|
|
5
|
+
*
|
|
6
|
+
* `iteratee` 调用时会传入三个参数 `value` `index|key` `collection` 。
|
|
7
|
+
*
|
|
8
|
+
* @function
|
|
9
|
+
* @alias module:Collection.forEach
|
|
10
|
+
* @since 1.7.0
|
|
11
|
+
* @param {ArrayLike<any> | Object} collection 要迭代的集合。
|
|
12
|
+
* @param {Function} [iteratee=identity] 每次迭代调用的函数。
|
|
13
|
+
* @returns {ArrayLike<any> | Object} 迭代集合本身。
|
|
14
|
+
* @example
|
|
15
|
+
*
|
|
16
|
+
* forEach([1,2,3], function(item){
|
|
17
|
+
* console.log(item);
|
|
18
|
+
* });
|
|
19
|
+
* // 1
|
|
20
|
+
* // 2
|
|
21
|
+
* // 3
|
|
22
|
+
*
|
|
23
|
+
* forEach({a: 1, b: 2}, function(value, key){
|
|
24
|
+
* console.log(value, key);
|
|
25
|
+
* });
|
|
26
|
+
* // 1 'a'
|
|
27
|
+
* // 2 'b'
|
|
28
|
+
*
|
|
29
|
+
*/
|
|
30
|
+
declare const forEach: {
|
|
31
|
+
<T>(collection: import("./internals/types").WithNullable<T[]>, iteratee?: import("./internals/types").ArrayIterator<T, any> | undefined): T[];
|
|
32
|
+
(collection: import("./internals/types").WithNullable<string>, iteratee?: import("./internals/types").StringIterator<any> | undefined): string;
|
|
33
|
+
<T_1>(collection: import("./internals/types").WithNullable<ArrayLike<T_1>>, iteratee?: import("./internals/types").ArrayLikeIterator<T_1, any> | undefined): ArrayLike<T_1>;
|
|
34
|
+
<T_2 extends object>(collection: import("./internals/types").WithNullable<T_2>, iteratee?: import("./internals/types").ObjectIterator<T_2, any> | undefined): T_2;
|
|
35
|
+
};
|
|
36
|
+
export default forEach;
|