UNPKG

ts-prime

Version:

A utility library for JavaScript and Typescript.

45 lines (44 loc) 1.16 kB
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 = {}));