@stdlib/utils-reduce 0.0.7 → 0.1.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.
package/docs/repl.txt DELETED
@@ -1,45 +0,0 @@
1
-
2
- {{alias}}( collection, initial, reducer[, thisArg] )
3
- Applies a function against an accumulator and each element in a collection
4
- and returns the accumulated result.
5
-
6
- When invoked, the reduction function is provided four arguments:
7
-
8
- - `accumulator`: accumulated value
9
- - `value`: collection value
10
- - `index`: collection index
11
- - `collection`: the input collection
12
-
13
- If provided an empty collection, the function returns the initial value.
14
-
15
- Parameters
16
- ----------
17
- collection: Array|TypedArray|Object
18
- Input collection. If provided an object, the object must be array-like
19
- (excluding strings and functions).
20
-
21
- initial: any
22
- Accumulator value used in the first invocation of the reduction
23
- function.
24
-
25
- reducer: Function
26
- Function to invoke for each element in the input collection.
27
-
28
- thisArg: any (optional)
29
- Execution context.
30
-
31
- Returns
32
- -------
33
- out: any
34
- Accumulated result.
35
-
36
- Examples
37
- --------
38
- > function sum( acc, v ) { return acc + v; };
39
- > var arr = [ 1.0, 2.0, 3.0 ];
40
- > var out = {{alias}}( arr, 0, sum )
41
- 6.0
42
-
43
- See Also
44
- --------
45
-
@@ -1,59 +0,0 @@
1
- /*
2
- * @license Apache-2.0
3
- *
4
- * Copyright (c) 2019 The Stdlib Authors.
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
-
19
- import reduce = require( './index' );
20
-
21
- const sum = ( acc: number, value: number ): number => {
22
- return acc + value;
23
- };
24
-
25
-
26
- // TESTS //
27
-
28
- // The function returns the accumulated value...
29
- {
30
- reduce( [ 0, 1, 1, NaN, 2 ], 0, sum ); // $ExpectType any
31
- reduce( [ -1, 1, 2 ], 100, sum ); // $ExpectType any
32
- reduce( [ -1, 1, 2 ], 0, sum, {} ); // $ExpectType any
33
- }
34
-
35
- // The compiler throws an error if the function is provided a first argument which is not a collection...
36
- {
37
- reduce( 2, 0, sum ); // $ExpectError
38
- reduce( false, 0, sum ); // $ExpectError
39
- reduce( true, 0, sum ); // $ExpectError
40
- reduce( {}, 0, sum ); // $ExpectError
41
- }
42
-
43
- // The compiler throws an error if the function is provided a third argument which is not a function...
44
- {
45
- reduce( [ 0, 1, 1, NaN, 2 ], 0, 2 ); // $ExpectError
46
- reduce( [ 0, 1, 1, NaN, 2 ], 0, false ); // $ExpectError
47
- reduce( [ 0, 1, 1, NaN, 2 ], 0, true ); // $ExpectError
48
- reduce( [ 0, 1, 1, NaN, 2 ], 0, 'abc' ); // $ExpectError
49
- reduce( [ 0, 1, 1, NaN, 2 ], 0, {} ); // $ExpectError
50
- reduce( [ 0, 1, 1, NaN, 2 ], 0, [] ); // $ExpectError
51
- }
52
-
53
- // The compiler throws an error if the function is provided an invalid number of arguments...
54
- {
55
- reduce(); // $ExpectError
56
- reduce( [ 1, 2, 3 ] ); // $ExpectError
57
- reduce( [ 1, 2, 3 ], 0 ); // $ExpectError
58
- reduce( [ 1, 2, 3 ], 0, sum, {}, 3 ); // $ExpectError
59
- }
package/lib/reduce.js DELETED
@@ -1,76 +0,0 @@
1
- /**
2
- * @license Apache-2.0
3
- *
4
- * Copyright (c) 2018 The Stdlib Authors.
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
-
19
- 'use strict';
20
-
21
- // MODULES //
22
-
23
- var isCollection = require( '@stdlib/assert-is-collection' );
24
- var isFunction = require( '@stdlib/assert-is-function' );
25
-
26
-
27
- // MAIN //
28
-
29
- /**
30
- * Applies a function against an accumulator and each element in a collection and returns the accumulated result.
31
- *
32
- * @param {Collection} collection - input collection
33
- * @param {*} initial - initial value
34
- * @param {Function} reducer - reduction function
35
- * @param {*} [thisArg] - reduction function execution context
36
- * @throws {TypeError} first argument must be a collection
37
- * @throws {TypeError} third argument must be a function
38
- * @returns {*} accumulated result
39
- *
40
- * @example
41
- * function sum( acc, value ) {
42
- * return acc + value;
43
- * }
44
- *
45
- * var arr = [ 1, 2, 3, 4 ];
46
- *
47
- * var s = reduce( arr, 0, sum );
48
- * // returns 10
49
- */
50
- function reduce( collection, initial, reducer, thisArg ) {
51
- var len;
52
- var acc;
53
- var i;
54
- if ( !isCollection( collection ) ) {
55
- throw new TypeError( 'invalid argument. First argument must be a collection. Value: `'+collection+'`.' );
56
- }
57
- if ( !isFunction( reducer ) ) {
58
- throw new TypeError( 'invalid argument. Third argument must be a function. Value:`'+reducer+'`.' );
59
- }
60
- len = collection.length;
61
- acc = initial;
62
- for ( i = 0; i < len; i++ ) {
63
- acc = reducer.call( thisArg, acc, collection[ i ], i, collection );
64
-
65
- // Account for dynamically resizing a collection...
66
- if ( len !== collection.length ) {
67
- len = collection.length;
68
- }
69
- }
70
- return acc;
71
- }
72
-
73
-
74
- // EXPORTS //
75
-
76
- module.exports = reduce;