@monstermann/fn
Version:
A utility library for TypeScript.
35 lines (33 loc) • 793 B
JavaScript
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 };