UNPKG

foop

Version:

interfaces that describe their intentions.

65 lines (59 loc) 5.72 kB
var isArray = require('../../is/array') var objOrArrayKeys = require('../../util/keysObjOrArray') var curry = require('../../fp/curry') var emptyTarget = require('../../dopemerge/emptyTarget') var defaultTo = require('../../cast/defaultTo') /** * filters an object or array * `iteratee`. The iteratee is invoked with three arguments: (value, key, object). * @memberOf loop * * @param {Object} obj The object to iterate over. * @param {Function} predicate The function invoked per iteration. * @param {Object} [init={}] output result object initial value * @return {Array} Returns the new mapped array. * * @name filterWhere * @alias pluckWhere * @alias filter * * @since 5.0.0 * @category Object * * {@link https://github.com/ramda/ramda/tree/v0.24.1/src/filter.js ramda-filter} * {@link https://github.com/lodash/lodash/blob/master/mapObject.js lodash-map-obj} * {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L1021 underscore-map-obj} * {@link https://github.com/lodash/lodash/blob/master/map.js lodash-map} * @see {@link lodash-map} * @see {@link underscore-map} * @see {@link ramda-filter} * * @TODO add `key first` sig option * * @example * * map([1, 2, 3, 'nope'], isNumber) * //=> [1, 2, 3] * * @example * * /// because `value` is first * map({'1': 1, 'nope': 'nope'}, isNumber) * //=> [1, 2, 3] * */ function filterMap(obj, predicate, init) { var result = defaultTo(emptyTarget(obj), init) var isArrayObj = isArray(obj) var keys = objOrArrayKeys(obj) for (var index = 0; index < keys.length; index++) { var key = isArrayObj ? index : keys[index] var value = obj[key] if (predicate(value, key, obj)) { result[key] = value } } return result } module.exports = curry(2, filterMap) //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyV2hlcmUuanMiLCJzb3VyY2VzIjpbImZpbHRlcldoZXJlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGlzQXJyYXkgPSByZXF1aXJlKCcuLi8uLi9pcy9hcnJheScpXG5jb25zdCBvYmpPckFycmF5S2V5cyA9IHJlcXVpcmUoJy4uLy4uL3V0aWwva2V5c09iak9yQXJyYXknKVxuY29uc3QgY3VycnkgPSByZXF1aXJlKCcuLi8uLi9mcC9jdXJyeScpXG5jb25zdCBlbXB0eVRhcmdldCA9IHJlcXVpcmUoJy4uLy4uL2RvcGVtZXJnZS9lbXB0eVRhcmdldCcpXG5jb25zdCBkZWZhdWx0VG8gPSByZXF1aXJlKCcuLi8uLi9jYXN0L2RlZmF1bHRUbycpXG5cbi8qKlxuICogZmlsdGVycyBhbiBvYmplY3Qgb3IgYXJyYXlcbiAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAqIEBtZW1iZXJPZiBsb29wXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtPYmplY3R9IFtpbml0PXt9XSBvdXRwdXQgcmVzdWx0IG9iamVjdCBpbml0aWFsIHZhbHVlXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqXG4gKiBAbmFtZSBmaWx0ZXJXaGVyZVxuICogQGFsaWFzIHBsdWNrV2hlcmVcbiAqIEBhbGlhcyBmaWx0ZXJcbiAqXG4gKiBAc2luY2UgNS4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3JhbWRhL3JhbWRhL3RyZWUvdjAuMjQuMS9zcmMvZmlsdGVyLmpzIHJhbWRhLWZpbHRlcn1cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL21hc3Rlci9tYXBPYmplY3QuanMgbG9kYXNoLW1hcC1vYmp9XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL2Jsb2IvbWFzdGVyL3VuZGVyc2NvcmUuanMjTDEwMjEgdW5kZXJzY29yZS1tYXAtb2JqfVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvbWFzdGVyL21hcC5qcyBsb2Rhc2gtbWFwfVxuICogQHNlZSB7QGxpbmsgbG9kYXNoLW1hcH1cbiAqIEBzZWUge0BsaW5rIHVuZGVyc2NvcmUtbWFwfVxuICogQHNlZSB7QGxpbmsgcmFtZGEtZmlsdGVyfVxuICpcbiAqIEBUT0RPIGFkZCBga2V5IGZpcnN0YCBzaWcgb3B0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgIG1hcChbMSwgMiwgMywgJ25vcGUnXSwgaXNOdW1iZXIpXG4gKiAgIC8vPT4gWzEsIDIsIDNdXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgIC8vLyBiZWNhdXNlIGB2YWx1ZWAgaXMgZmlyc3RcbiAqICAgbWFwKHsnMSc6IDEsICdub3BlJzogJ25vcGUnfSwgaXNOdW1iZXIpXG4gKiAgIC8vPT4gWzEsIDIsIDNdXG4gKlxuICovXG5mdW5jdGlvbiBmaWx0ZXJNYXAob2JqLCBwcmVkaWNhdGUsIGluaXQpIHtcbiAgY29uc3QgcmVzdWx0ID0gZGVmYXVsdFRvKGVtcHR5VGFyZ2V0KG9iaiksIGluaXQpXG4gIGNvbnN0IGlzQXJyYXlPYmogPSBpc0FycmF5KG9iailcbiAgY29uc3Qga2V5cyA9IG9iak9yQXJyYXlLZXlzKG9iailcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwga2V5cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBrZXkgPSBpc0FycmF5T2JqID8gaW5kZXggOiBrZXlzW2luZGV4XVxuICAgIGNvbnN0IHZhbHVlID0gb2JqW2tleV1cblxuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGtleSwgb2JqKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjdXJyeSgyLCBmaWx0ZXJNYXApXG4iXSwibmFtZXMiOlsiY29uc3QiLCJsZXQiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN6Q0EsR0FBSyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsMkJBQTJCLENBQUM7QUFDM0RBLEdBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0FBQ3ZDQSxHQUFLLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQztBQUMxREEsR0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUNqRCxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRTtFQUN2Q0EsR0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQztFQUNoREEsR0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0VBQy9CQSxHQUFLLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUM7O0VBRWhDLEtBQUtDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO0lBQ2hERCxHQUFLLENBQUMsR0FBRyxHQUFHLFVBQVUsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUM1Q0EsR0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDOztJQUV0QixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO01BQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLO0tBQ3BCO0dBQ0Y7O0VBRUQsT0FBTyxNQUFNO0NBQ2Q7O0FBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQzsifQ==