UNPKG

super-utils-plus

Version:

A superior alternative to Lodash with improved performance, TypeScript support, and developer experience

50 lines (49 loc) 1.05 kB
import { isArray } from '../utils/is'; /** * Flattens array a single level deep. * * @param array - The array to flatten * @returns The new flattened array * * @example * ```ts * flatten([1, [2, [3, [4]], 5]]); * // => [1, 2, [3, [4]], 5] * ``` */ export function flatten(array) { if (!array || !array.length) { return []; } return array.reduce((result, item) => { if (isArray(item)) { return result.concat(item); } result.push(item); return result; }, []); } /** * Recursively flattens array. * * @param array - The array to flatten * @returns The new flattened array * * @example * ```ts * flattenDeep([1, [2, [3, [4]], 5]]); * // => [1, 2, 3, 4, 5] * ``` */ export function flattenDeep(array) { if (!array || !array.length) { return []; } return array.reduce((result, item) => { if (isArray(item)) { return result.concat(flattenDeep(item)); } result.push(item); return result; }, []); }