@monstermann/fn
Version:
A utility library for TypeScript.
31 lines (29 loc) • 733 B
JavaScript
import { dfdlT } from "@monstermann/dfdl";
//#region src/array/indexOfOrElse.ts
/**
* `indexOfOrElse(target, value, orElse)`
*
* Returns the index of the first occurrence of `value` in `target`. If `value` is not found, calls `orElse` with the original array.
*
* ```ts
* indexOfOrElse([1, 2, 3, 2], 2, () => -1); // 1
* indexOfOrElse([1, 2, 3], 4, (arr) => arr.length); // 3
* ```
*
* ```ts
* pipe(
* [1, 2, 3, 2],
* indexOfOrElse(2, () => -1),
* ); // 1
* pipe(
* [1, 2, 3],
* indexOfOrElse(4, (arr) => arr.length),
* ); // 3
* ```
*/
const indexOfOrElse = dfdlT((target, value, orElse) => {
const idx = target.indexOf(value);
return idx < 0 ? orElse(target) : idx;
}, 3);
//#endregion
export { indexOfOrElse };