@jonkemp/package-utils
Version:
Helper utility modules for collections, arrays, objects and more
27 lines (22 loc) • 671 B
JavaScript
const isArrayLike = require('./is-array-like');
const isArguments = require('./is-arguments');
const forEach = require('./for-each');
const flatten = (input, shallow, strict, output = []) => {
let idx = output.length;
forEach(input, value => {
if (isArrayLike(value) && (Array.isArray(value) || isArguments(value))) {
if (shallow) {
let j = 0;
const len = value.length;
while (j < len) output[idx++] = value[j++];
} else {
flatten(value, shallow, strict, output);
idx = output.length;
}
} else if (!strict) {
output[idx++] = value;
}
});
return output;
};
module.exports = (array, shallow) => flatten(array, shallow, false);