function zipObject(props, values) {
      var index = -1,
          length = props ? props.length : 0,
          result = {};

      if (!values && length && !isArray(props[0])) {
        values = [];
      }
      while (++index < length) {
        var key = props[index];
        if (values) {
          result[key] = values[index];
        } else if (key) {
          result[key[0]] = key[1];
        }
      }
      return result;
    }
Creates an object composed from arrays of property names and values. Provide
either a single two dimensional array, e.g. `[[key1, value1], [key2, value2]]`
or two arrays, one of property names and one of corresponding values.

@static
@memberOf _
@alias object
@category Array
@param {Array} props The property names.
@param {Array} [values=[]] The property values.
@returns {Object} Returns the new object.
@example

_.zipObject(['fred', 'barney'], [30, 40]);
// => { 'fred': 30, 'barney': 40 }