@monstermann/fn
Version:
A utility library for TypeScript.
33 lines (31 loc) • 842 B
JavaScript
import { addRange, createRange, hasRange, spliceRange } from "./internals/range.js";
import { dfdlT } from "@monstermann/dfdl";
import { cloneArray } from "@monstermann/remmi";
//#region src/array/reject.ts
/**
* `reject(array, predicate)`
*
* Returns a new array with elements from `array` that do not satisfy the provided `predicate` function.
*
* ```ts
* reject([1, 2, 3, 4, 5], (x) => x % 2 === 0); // [1, 3, 5]
* ```
*
* ```ts
* pipe(
* [1, 2, 3, 4, 5],
* reject((x) => x % 2 === 0),
* ); // [1, 3, 5]
* ```
*/
const reject = dfdlT((target, predicate) => {
const range = createRange();
for (let i = 0; i < target.length; i++) if (predicate(target[i], i, target)) addRange(range, i);
if (hasRange(range)) {
target = cloneArray(target);
spliceRange(target, range);
}
return target;
}, 2);
//#endregion
export { reject };