@extra-array/flat
Version:
Flattens nested array to given depth.
24 lines (23 loc) • 487 B
JavaScript
;
function id(v) {
return v;
}
function is(v) {
return Array.isArray(v);
}
function flatTo(x, n, fm, ft, a) {
var i = -1;
for (var v of x) {
var v1 = fm(v, ++i, x);
if (n !== 0 && ft(v1, i, x))
flatTo(v, n - 1, fm, ft, a);
else
a.push(v1);
}
return a;
}
function flat(x, n = -1, fm = null, ft = null) {
var fm = fm || id, ft = ft || is;
return flatTo(x, n, fm, ft, []);
}
module.exports = flat;