super-utils-plus
Version:
A superior alternative to Lodash with improved performance, TypeScript support, and developer experience
50 lines (49 loc) • 1.05 kB
JavaScript
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;
}, []);
}