code: function where (object, query) {
    var output = {}
    var prop
    if (typeof query === 'function') {
      for (prop in object) {
        if (query(object[prop], prop) === true) output[prop] = object[prop]
      }
    } else if (Array.isArray(query)) {
      for (prop in object) {
        if (query.indexOf(prop) > -1) output[prop] = object[prop]
      }
    }
    return output
  }
docs: Returns a new object containing the key/value pairs which satisfy the query
  @param {object} - The input object
  @param {string[]|function(*, string)} - Either an array of property names, or a function. The function is called with `(value, key)` and must return `true` to be included in the output.
  @returns {object}
  @static
  @example
  > object = { a: 1, b: 0, c: 2 }
  { a: 1, b: 0, c: 2 }
  > o.where(object, function(value, key){
  return value > 0
  })
  { a: 1, c: 2 }
  > o.where(object, [ 'b' ])
  { b: 0 }
  > object
  { a: 1, b: 0, c: 2 }
  @since 1.2.0