@thi.ng/transducers
Version:
Collection of ~170 lightweight, composable transducers, reducers, generators, iterators for functional data transformations
38 lines (37 loc) • 683 B
JavaScript
import { compR } from "./compr.js";
import { __iter } from "./iterator.js";
function mapNth(...args) {
const iter = __iter(mapNth, args);
if (iter) {
return iter;
}
let n = args[0] - 1;
let offset;
let fn;
if (typeof args[1] === "number") {
offset = args[1];
fn = args[2];
} else {
fn = args[1];
offset = 0;
}
return (rfn) => {
const r = rfn[2];
let skip = 0, off = offset;
return compR(rfn, (acc, x) => {
if (off === 0) {
if (skip === 0) {
skip = n;
return r(acc, fn(x));
}
skip--;
} else {
off--;
}
return r(acc, x);
});
};
}
export {
mapNth
};