@extra-array/flat-map
Version:
Flattens nested array, based on map function.
26 lines (25 loc) • 484 B
JavaScript
;
function id(v) {
return v;
}
function is(v) {
return Array.isArray(v);
}
function concat$(x, ...ys) {
for (var y of ys)
x.push(...y);
return x;
}
function flatMap(x, fm = null, ft = null) {
var fm = fm || id, ft = ft || is;
var a = [], i = -1;
for (var v of x) {
var v1 = fm(v, ++i, x);
if (ft(v1, i, x))
concat$(a, v1);
else
a.push(v1);
}
return a;
}
module.exports = flatMap;