5
5
6
6
"use strict" ;
7
7
8
+ /**
9
+ * Compare two arrays or strings by performing strict equality check for each value.
10
+ * @template T [T=any]
11
+ * @param {ArrayLike<T> } a Array of values to be compared
12
+ * @param {ArrayLike<T> } b Array of values to be compared
13
+ * @returns {boolean } returns true if all the elements of passed arrays are strictly equal.
14
+ */
15
+
8
16
exports . equals = ( a , b ) => {
9
17
if ( a . length !== b . length ) return false ;
10
18
for ( let i = 0 ; i < a . length ; i ++ ) {
@@ -14,13 +22,19 @@ exports.equals = (a, b) => {
14
22
} ;
15
23
16
24
/**
17
- *
18
- * @param {Array } arr Array of values to be partitioned
19
- * @param {(value: any) => boolean } fn Partition function which partitions based on truthiness of result.
20
- * @returns {[Array, Array] } returns the values of `arr` partitioned into two new arrays based on fn predicate.
25
+ * Partition an array by calling a predicate function on each value.
26
+ * @template T [T=any]
27
+ * @param {Array<T> } arr Array of values to be partitioned
28
+ * @param {(value: T) => boolean } fn Partition function which partitions based on truthiness of result.
29
+ * @returns {[Array<T>, Array<T>] } returns the values of `arr` partitioned into two new arrays based on fn predicate.
21
30
*/
22
31
exports . groupBy = ( arr = [ ] , fn ) => {
23
32
return arr . reduce (
33
+ /**
34
+ * @param {[Array<T>, Array<T>] } groups An accumulator storing already partitioned values returned from previous call.
35
+ * @param {T } value The value of the current element
36
+ * @returns {[Array<T>, Array<T>] } returns an array of partitioned groups accumulator resulting from calling a predicate on the current value.
37
+ */
24
38
( groups , value ) => {
25
39
groups [ fn ( value ) ? 0 : 1 ] . push ( value ) ;
26
40
return groups ;
0 commit comments