indexzero
3/14/2015 - 11:52 PM

Fun with `function.apply` and `Array.reduce`

Fun with function.apply and Array.reduce

function logAndSum(sum, n) {
  console.log('%s + %s = %s', sum, n, n + sum);
  return n + sum;
}

function logAndSumAll () {
  var args = Array.prototype.slice.call(arguments);
  console.log(
    args.join(' + ') + ' = ' + args.reduce(function (sum, n) { return sum + n }, 0)
  );
}

var nums = [1, 2, 3, 4, 5];

// nums.reduce(logAndSum, 10);

nums.forEach(function (n, i) {
  var subArray = nums.slice(-1 * (i+1));
  console.log(subArray);
  logAndSumAll.apply(logAndSumAll, subArray);
  console.log();
});

nums
  .map(function (n, i) {
    return nums.slice(-1 * (i+1));
  })
  .reverse()
  .forEach(function (subArray) {
    console.log(subArray);
    logAndSumAll.apply(logAndSumAll, subArray);
    console.log();
  });