UNPKG

sikits

Version:

A powerful and comprehensive utility library for JavaScript and TypeScript with 100+ functions for strings, numbers, arrays, and objects

118 lines (117 loc) 3.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.partition = exports.movingAverage = exports.rotate = exports.unzip = exports.zip = exports.uniqueBy = exports.findDuplicates = exports.max = exports.min = exports.average = exports.sum = exports.shuffle = exports.groupBy = exports.remove = exports.difference = exports.intersection = exports.compact = exports.chunk = exports.flatten = exports.unique = void 0; function unique(array) { return Array.from(new Set(array)); } exports.unique = unique; function flatten(arrays) { return arrays.reduce((acc, val) => acc.concat(val), []); } exports.flatten = flatten; function chunk(array, size) { return Array.from({ length: Math.ceil(array.length / size) }, (_, i) => array.slice(i * size, i * size + size)); } exports.chunk = chunk; function compact(array) { return array.filter((item) => Boolean(item)); } exports.compact = compact; function intersection(array1, array2) { return array1.filter((item) => array2.includes(item)); } exports.intersection = intersection; function difference(array1, array2) { return array1.filter((item) => !array2.includes(item)); } exports.difference = difference; function remove(array, value) { return array.filter((item) => item !== value); } exports.remove = remove; function groupBy(array, keyGetter) { return array.reduce((acc, item) => { const key = keyGetter(item); (acc[key] = acc[key] || []).push(item); return acc; }, {}); } exports.groupBy = groupBy; function shuffle(array) { return array.slice().sort(() => Math.random() - 0.5); } exports.shuffle = shuffle; function sum(array) { return array.reduce((acc, val) => acc + val, 0); } exports.sum = sum; function average(array) { return array.length > 0 ? sum(array) / array.length : 0; } exports.average = average; function min(array) { return array.length > 0 ? Math.min(...array) : Infinity; } exports.min = min; function max(array) { return array.length > 0 ? Math.max(...array) : -Infinity; } exports.max = max; function findDuplicates(array) { const seen = new Set(); const duplicates = new Set(); for (const item of array) { if (seen.has(item)) { duplicates.add(item); } seen.add(item); } return Array.from(duplicates); } exports.findDuplicates = findDuplicates; function uniqueBy(array, keyGetter) { const seen = new Set(); return array.filter((item) => { const key = keyGetter(item); if (seen.has(key)) { return false; } seen.add(key); return true; }); } exports.uniqueBy = uniqueBy; function zip(array1, array2) { const length = Math.min(array1.length, array2.length); return Array.from({ length }, (_, i) => [array1[i], array2[i]]); } exports.zip = zip; function unzip(pairs) { return [pairs.map(([a]) => a), pairs.map(([, b]) => b)]; } exports.unzip = unzip; function rotate(array, steps) { const len = array.length; if (len === 0) return []; const shift = ((steps % len) + len) % len; return [...array.slice(-shift), ...array.slice(0, -shift)]; } exports.rotate = rotate; function movingAverage(array, windowSize) { if (windowSize <= 0 || array.length < windowSize) return []; return array .map((_, i, arr) => i >= windowSize - 1 ? sum(arr.slice(i - windowSize + 1, i + 1)) / windowSize : undefined) .filter((n) => n !== undefined); } exports.movingAverage = movingAverage; function partition(array, predicate) { return array.reduce((acc, item) => { acc[predicate(item) ? 0 : 1].push(item); return acc; }, [[], []]); } exports.partition = partition;