function zip(var_args) {
  if (!arguments.length) {
    return [];
  }
  const result = [];
  let minLen = arguments[0].length;
  for (let i = 1; i < arguments.length; i++) {
    if (arguments[i].length < minLen) {
      minLen = arguments[i].length;
    }
  }
  for (let i = 0; i < minLen; i++) {
    const value = [];
    for (let j = 0; j < arguments.length; j++) {
      value.push(arguments[j][i]);
    }
    result.push(value);
  }
  return result;
}
Creates a new array for which the element at position i is an array of the
ith element of the provided arrays.  The returned array will only be as long
as the shortest array provided; additional values are ignored.  For example,
the result of zipping [1, 2] and [3, 4, 5] is [[1,3], [2, 4]].

This is similar to the zip() function in Python.  See {@link
http://docs.python.org/library/functions.html#zip}

@param {...!IArrayLike<?>} var_args Arrays to be combined.
@return {!Array<!Array<?>>} A new array of arrays created from
    provided arrays.