32 lines
784 B
JavaScript
32 lines
784 B
JavaScript
function chunk(array, size = 1) {
|
|
return Array.range(Math.ceil(array.length / size)).map(i => array.slice(i * size, i * size + size));
|
|
}
|
|
|
|
function range(start, stop = undefined, step = 1) {
|
|
if (!stop) {
|
|
stop = start;
|
|
start = 0;
|
|
}
|
|
return start < stop ? Array.from({ length: Math.ceil((stop - start) / step) }, (_, i) => start + i * step) : [];
|
|
}
|
|
|
|
function unique(array, op = x => x) {
|
|
return array.filter((obj, i) => array.findIndex(entry => op(obj) === op(entry)) === i);
|
|
}
|
|
|
|
function zip(...args) {
|
|
return Array.from({ length: Math.max(...args.map(arg => arg.length)) }, (_, i) => args.map(arg => arg[i]));
|
|
}
|
|
|
|
function capitalize(str) {
|
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
}
|
|
|
|
module.exports = {
|
|
chunk,
|
|
range,
|
|
unique,
|
|
zip,
|
|
capitalize,
|
|
};
|