UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

33 lines (31 loc) 842 B
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 };