From 2d93f28bf485027951555d7b9ad218992308f7ae Mon Sep 17 00:00:00 2001 From: itsspriyansh Date: Thu, 29 Feb 2024 07:07:55 +0530 Subject: [PATCH 1/3] feat: added @stdlib/utils/any-in-by --- .../@stdlib/utils/any-in-by/README.md | 185 ++++++++++++++++++ .../utils/any-in-by/benchmark/benchmark.js | 136 +++++++++++++ .../utils/any-in-by/benchmark/julia/REQUIRE | 2 + .../any-in-by/benchmark/julia/benchmark.jl | 144 ++++++++++++++ .../@stdlib/utils/any-in-by/docs/repl.txt | 40 ++++ .../utils/any-in-by/docs/types/index.d.ts | 102 ++++++++++ .../utils/any-in-by/docs/types/test.ts | 53 +++++ .../@stdlib/utils/any-in-by/examples/index.js | 37 ++++ .../@stdlib/utils/any-in-by/lib/index.js | 50 +++++ .../@stdlib/utils/any-in-by/lib/main.js | 75 +++++++ .../@stdlib/utils/any-in-by/package.json | 67 +++++++ .../@stdlib/utils/any-in-by/test/test.js | 103 ++++++++++ 12 files changed, 994 insertions(+) create mode 100644 lib/node_modules/@stdlib/utils/any-in-by/README.md create mode 100644 lib/node_modules/@stdlib/utils/any-in-by/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/utils/any-in-by/benchmark/julia/REQUIRE create mode 100644 lib/node_modules/@stdlib/utils/any-in-by/benchmark/julia/benchmark.jl create mode 100644 lib/node_modules/@stdlib/utils/any-in-by/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/utils/any-in-by/docs/types/index.d.ts create mode 100644 lib/node_modules/@stdlib/utils/any-in-by/docs/types/test.ts create mode 100644 lib/node_modules/@stdlib/utils/any-in-by/examples/index.js create mode 100644 lib/node_modules/@stdlib/utils/any-in-by/lib/index.js create mode 100644 lib/node_modules/@stdlib/utils/any-in-by/lib/main.js create mode 100644 lib/node_modules/@stdlib/utils/any-in-by/package.json create mode 100644 lib/node_modules/@stdlib/utils/any-in-by/test/test.js diff --git a/lib/node_modules/@stdlib/utils/any-in-by/README.md b/lib/node_modules/@stdlib/utils/any-in-by/README.md new file mode 100644 index 000000000000..a774899a3be1 --- /dev/null +++ b/lib/node_modules/@stdlib/utils/any-in-by/README.md @@ -0,0 +1,185 @@ + + +# anyInBy + +> Test whether at least one property in an object passes a test implemented by a predicate function. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var anyInBy = require( '@stdlib/utils/any-in-by' ); +``` + +#### anyInBy( object, predicate\[, thisArg ] ) + +Tests whether at least one property in an `object` passes a test implemented by a `predicate` function. + +```javascript +function isNegative( value ) { + return ( value < 0 ); +} + +var obj = { + 'a': 1, + 'b': 2, + 'c': -1 +}; + +var bool = anyInBy( obj, isNegative ); +// returns true +``` + +If a `predicate` function returns a truthy value, the function **immediately** returns `true`. + +```javascript +function isPositive( value ) { + if ( value < 0 ) { + throw new Error( 'should never reach this line' ); + } + return ( value > 0 ); +} + +var obj = { + 'a': 1, + 'b': -2, + 'c': 3 +}; + +var bool = anyInBy( obj, isPositive ); +// returns true +``` + +The invoked `function` is provided three arguments: + +- `value`: property value +- `key`: property key +- `object`: input object + +To set the function execution context, provide a `thisArg`. + +```javascript +function sum( value ) { + this.sum += value; + this.count += 1; + return ( value < 0 ); +} + +var obj = { + 'a': 1, + 'b': 2, + 'c': 3, + 'd': -4 +}; + +var context = { + 'sum': 0, + 'count': 0 +}; + +var bool = anyInBy( obj, sum, context ); +// returns true + +var mean = context.sum / context.count; +// returns 0.5 +``` + +
+ + + + + +
+ +## Notes + +- The `obj` object may contain own properties as well as inherited properties from its prototype chain. + +- If provided an empty object, the function returns `false`. + + ```javascript + function alwaysTrue() { + return true; + } + var bool = anyInBy( {}, alwaysTrue ); + // returns false + ``` + +
+ + + + + + +
+ +## Examples + + + +```javascript +var randu = require( '@stdlib/random/base/randu' ); +var anyInBy = require( '@stdlib/utils/any-in-by' ); + +function threshold( value ) { + return ( value > 0.95 ); +} + +var bool; +var obj = {}; +var i; + +for ( i = 0; i < 100; i++ ) { + obj[i] = randu(); +} + +bool = anyInBy( obj, threshold ); +// returns +``` + +
+ + + + + +
+ +
+ + + + + +