nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
49 lines (48 loc) • 1.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getLastArrayElement = exports.shuffleArray = exports.isInvalidOrEmptyArray = exports.filterArrayOfObjects = exports.flattenArray = void 0;
const flattenArray = (input) => {
if (!Array.isArray(input))
return [input];
return input.reduce((acc, item) => {
return acc.concat(Array.isArray(item) ? (0, exports.flattenArray)(item) : [item]);
}, []);
};
exports.flattenArray = flattenArray;
const filterArrayOfObjects = (array, conditions) => {
if (!Array.isArray(array)) {
throw new Error('The provided input is not a valid array!');
}
return array?.filter((item) => Object.entries(conditions)?.every(([key, conditionFn]) => {
if (typeof conditionFn === 'function') {
return conditionFn(item[key]);
}
return true;
}));
};
exports.filterArrayOfObjects = filterArrayOfObjects;
const isInvalidOrEmptyArray = (value) => {
if (!Array.isArray(value))
return true;
if (value?.length === 0)
return true;
return value?.every((item) => item == null ||
(Array.isArray(item) && item?.length === 0) ||
(typeof item === 'object' && Object.keys(item || {})?.length === 0));
};
exports.isInvalidOrEmptyArray = isInvalidOrEmptyArray;
const shuffleArray = (array) => {
if ((0, exports.isInvalidOrEmptyArray)(array))
return array;
const shuffled = [...array];
for (let i = shuffled?.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
}
return shuffled;
};
exports.shuffleArray = shuffleArray;
const getLastArrayElement = (array) => {
return array?.length > 0 ? array[array?.length - 1] : undefined;
};
exports.getLastArrayElement = getLastArrayElement;