ts-prime
Version:
A utility library for JavaScript and Typescript.
45 lines (44 loc) • 1.16 kB
JavaScript
import { _reduceLazy } from './_reduceLazy';
import { purry } from './purry';
export function flattenDeep() {
return purry(_flattenDeep, arguments, flattenDeep.lazy);
}
function _flattenDeep(items) {
return _reduceLazy(items, flattenDeep.lazy());
}
function _flattenDeepValue(value) {
if (!Array.isArray(value)) {
return value;
}
var ret = [];
value.forEach(function (item) {
if (Array.isArray(item)) {
ret.push.apply(ret, flattenDeep(item));
}
else {
ret.push(item);
}
});
return ret;
}
(function (flattenDeep) {
function lazy() {
return function (value) {
var next = _flattenDeepValue(value);
if (Array.isArray(next)) {
return {
done: false,
hasNext: true,
hasMany: true,
next: next,
};
}
return {
done: false,
hasNext: true,
next: next,
};
};
}
flattenDeep.lazy = lazy;
})(flattenDeep || (flattenDeep = {}));