UNPKG

frontend-util-everything

Version:
110 lines (98 loc) 2.5 kB
/** * @description Generates an array of numbers starting from a given number. * @param {number} n * @param {number} start * @returns {Array} */ function generateNumbers(n, start = 1) { return Array.from({ length: n }, (_, i) => start + i); } /** * @description Flattens a nested array up to a specified depth. * @param {Array} arr * @param {number} depth * @returns {Array} */ function flattenArray(arr, depth = 1) { return depth > 0 ? arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flattenArray(val, depth - 1) : val), []) : arr.slice(); } /** * @description Removes duplicates from an array. * @param {Array} arr * @param {number} value * @returns {Array} */ function removeDuplicates(arr, value) { return arr.filter(item => item !== value); } /** * @description Finds all the index of the first occurrence of a value in an array. * @param {Array} arr * @param {value} value * @returns {Array} */ function findAllIndexes(arr, value) { return arr.reduce((acc, item, index) => { if (item === value) acc.push(index); return acc; }, []); } /** * @description Checks if an array is empty. * @param {Array} arr * @returns {boolean} */ function isEmptyArray(arr) { return Array.isArray(arr) && arr.length === 0; } /** * @description sorts an array in ascending order. * @param {Array} arr * @returns {Array} */ function sortArrayAscending(arr) { return arr.slice().sort((a, b) => a - b); } /** * @description sorts an array in descending order. * @param {Array} arr * @returns {Array} */ function sortArrayDescending(arr) { return arr.slice().sort((a, b) => b - a); } /** * @description bubble sort algorithm implementation. * @param {Array} arr * @returns {Array} */ function bubbleSort(arr) { const len = arr.length; for (let i = 0; i < len - 1; i++) { for (let j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j + 1]) { [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; } } } return arr; } /** * @description Removes all duplicate values from an array, returning a new array with unique values. * @param {Array} arr * @returns {Array} */ function uniqueArray(arr) { return Array.from(new Set(arr)); } module.exports = { generateNumbers, flattenArray, removeDuplicates, findAllIndexes, isEmptyArray, sortArrayAscending, sortArrayDescending, bubbleSort, uniqueArray }