helpers.js 812 Bytes
Newer Older
vicotor's avatar
vicotor committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
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(Math.ceil((stop - start) / step))
        .fill()
        .map((_, 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(Math.max(...args.map(arg => arg.length)))
    .fill(null)
    .map((_, i) => args.map(arg => arg[i]));
}

function capitalize(str) {
  return str.charAt(0).toUpperCase() + str.slice(1);
}

module.exports = {
  chunk,
  range,
  unique,
  zip,
  capitalize,
};