hof-y123
Version:
A collection of handy Higher-Order Functions (HOFs) for JavaScript arrays to simplify common tasks.
58 lines (46 loc) • 1.28 kB
JavaScript
// 1. Sum of elements
const sum = arr => arr.reduce((acc, val) => acc + val, 0);
// 2. Average of elements
const average = arr => arr.length === 0 ? 0 : sum(arr) / arr.length;
// 3. Remove duplicates
const unique = arr => [...new Set(arr)];
// 4. Find max
const max = arr => Math.max(...arr);
// 5. Find min
const min = arr => Math.min(...arr);
// 6. Group by a function (e.g. by type or even/odd)
const groupBy = (arr, fn) =>
arr.reduce((acc, val) => {
const key = fn(val);
(acc[key] = acc[key] || []).push(val);
return acc;
}, {});
// 7. Count frequency of elements
const frequency = arr =>
arr.reduce((acc, val) => {
acc[val] = (acc[val] || 0) + 1;
return acc;
}, {});
// 8. Shuffle array
const shuffle = arr =>
[...arr].sort(() => Math.random() - 0.5);
// 9. Chunk into parts
const chunk = (arr, size) =>
Array.from({ length: Math.ceil(arr.length / size) }, (_, i) =>
arr.slice(i * size, i * size + size)
);
// 10. Flatten nested array
const flatten = arr => arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatten(val) : val), []);
// Export all
module.exports = {
sum,
average,
unique,
max,
min,
groupBy,
frequency,
shuffle,
chunk,
flatten,
};