code: function zipmap(collection) {
          var arrays = Array.prototype.slice.call(arguments, 1);
          return collection.map(function(element, i) {
              var others = [];
              for (var j = 0; j < arrays.length; j++) {
                  var el = arrays[j] && arrays[j][i];
                  others.push(el !== null && typeof el !== 'undefined' ? el : null);
              }
              return [element].concat(others);
          });
      }
docs: Produces an array of arrays which are the result of zipping together the
  elements of `this` and the array arguments. If any of the array arguments are
  longer than `this`, their remaining elements will be skipped. If any of the array
  arguments are shorter than `this`, their missing elements will be replaced with null.
  
  @static
  @param {array} collection - The source array
  @param {array} arrays* - A variadic number of arrays to be zipmapped