var baseGet = require('./_baseGet'),

baseSet = require('./_baseSet'),
castPath = require('./_castPath');

/**

* The base implementation of  `_.pickBy` without support for iteratee shorthands.
*
* @private
* @param {Object} object The source object.
* @param {string[]} paths The property paths to pick.
* @param {Function} predicate The function invoked per property.
* @returns {Object} Returns the new object.
*/

function basePickBy(object, paths, predicate) {

var index = -1,
    length = paths.length,
    result = {};

while (++index < length) {
  var path = paths[index],
      value = baseGet(object, path);

  if (predicate(value, path)) {
    baseSet(result, castPath(path, object), value);
  }
}
return result;

}

module.exports = basePickBy;