Skip to content

Instantly share code, notes, and snippets.

@SLaks
Created March 17, 2014 17:18
Show Gist options
  • Save SLaks/9603883 to your computer and use it in GitHub Desktop.
Save SLaks/9603883 to your computer and use it in GitHub Desktop.
Zip(...array, cb)
int[] arr1 = { 1, 2, 3 };
int[] arr2 = { 4, 5, 6 };
var result = Enumerable.Zip(arr1, arr2, (a, b) => a + b);
// 5, 7, 9
var arr1 = [ 1, 2, 3 ];
var arr2 = [ 4, 5, 6 ];
var result = _.zip(arr1, arr2, function(a, b) { return a + b; });
// 5, 7, 9
@jdalton
Copy link

jdalton commented Mar 17, 2014

function zipWith() {
  var length = arguments.length;
  if (!length) {
    return [];
  }
  var last = arguments[length - 1],
      provided = !_.isArray(last), 
      callback = _.createCallback(provided ? last : null),
      args = _.slice(arguments, 0, length - (provided ? 1 : 0));

  return _.map(_.zip(args), function(args) {
    return callback.apply(null, args);
  });
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment