UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

35 lines (33 loc) 793 B
import { is } from "../function/is.js"; import { dfdlT } from "@monstermann/dfdl"; import { cloneArray } from "@monstermann/remmi"; //#region src/array/mapEach.ts /** * `mapEach(array, mapper)` * * Applies the `mapper` function to each element in `array`, returning a new array with the mapped elements. * * ```ts * mapEach([1, 2, 3, 4], (x) => x * 2); // [2, 4, 6, 8] * ``` * * ```ts * pipe( * [1, 2, 3, 4], * mapEach((x) => x * 2), * ); // [2, 4, 6, 8] * ``` */ const mapEach = dfdlT((target, mapper) => { let result; for (let i = 0; i < target.length; i++) { const prev = target[i]; const next = mapper(prev, i, target); if (is(prev, next)) continue; result ??= cloneArray(target); result[i] = next; } return result ?? target; }, 2); //#endregion export { mapEach };