UNPKG

@extra-array/flat

Version:

Flattens nested array to given depth.

24 lines (23 loc) 487 B
'use strict'; 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;