@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/CITATION.cff +30 -0
- package/LICENSE +0 -304
- package/NOTICE +1 -1
- package/README.md +135 -73
- package/dist/index.d.ts +3 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +7 -0
- package/docs/types/index.d.ts +85 -27
- package/lib/array.js +78 -0
- package/lib/index.js +18 -4
- package/lib/main.js +94 -0
- package/lib/ndarray.js +153 -0
- package/package.json +36 -13
- package/docs/repl.txt +0 -45
- package/docs/types/test.ts +0 -59
- package/lib/reduce.js +0 -76
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
|
-
|
package/docs/types/test.ts
DELETED
|
@@ -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;
|