super-utils-plus
Version:
A superior alternative to Lodash with improved performance, TypeScript support, and developer experience
54 lines (53 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.flatten = flatten;
exports.flattenDeep = flattenDeep;
const is_1 = require("../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]
* ```
*/
function flatten(array) {
if (!array || !array.length) {
return [];
}
return array.reduce((result, item) => {
if ((0, is_1.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]
* ```
*/
function flattenDeep(array) {
if (!array || !array.length) {
return [];
}
return array.reduce((result, item) => {
if ((0, is_1.isArray)(item)) {
return result.concat(flattenDeep(item));
}
result.push(item);
return result;
}, []);
}