foop
Version:
interfaces that describe their intentions.
44 lines (41 loc) • 3.67 kB
JavaScript
var prop = require('../../fp/prop')
var curry = require('../../fp/curry')
var map = require('./_map')
/**
* Returns a new list by plucking the same named property off all objects in
* the list supplied.
*
* `pluck` will work on
* any [functor](https://github.com/fantasyland/fantasy-land#functor) in
* addition to arrays, as it is equivalent to `map(prop(k), f)`.
* @since 5.0.0-beta.6
* @memberOf loop
*
* @func
* @fork v0.1.0
* @category List
* @sig Functor f => k -> f {k: v} -> f v
*
* @param {Number|String} path The key name to pluck off of each object.
* @param {Array} functorList The array or functor to consider.
* @return {Array} The list of values for the given key.
*
* @see fp/props
* {@link https://github.com/ramda/ramda/blob/master/src/pluck.js ramda-pluck}
* @see {@link ramda-pluck}
*
* @symb pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5]
* @symb pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5]
*
* @example
*
* pluck('a')([{a: 1}, {a: 2}]); //=> [1, 2]
* pluck(0)([[1, 2], [3, 4]]); //=> [1, 3]
* pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5}
*
*/
function _pluck(path, functorList) {
return map(prop(path), functorList)
}
module.exports = curry(2, _pluck)
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Y2suanMiLCJzb3VyY2VzIjpbInBsdWNrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHByb3AgPSByZXF1aXJlKCcuLi8uLi9mcC9wcm9wJylcbmNvbnN0IGN1cnJ5ID0gcmVxdWlyZSgnLi4vLi4vZnAvY3VycnknKVxuY29uc3QgbWFwID0gcmVxdWlyZSgnLi9fbWFwJylcblxuLyoqXG4gKiBSZXR1cm5zIGEgbmV3IGxpc3QgYnkgcGx1Y2tpbmcgdGhlIHNhbWUgbmFtZWQgcHJvcGVydHkgb2ZmIGFsbCBvYmplY3RzIGluXG4gKiB0aGUgbGlzdCBzdXBwbGllZC5cbiAqXG4gKiBgcGx1Y2tgIHdpbGwgd29yayBvblxuICogYW55IFtmdW5jdG9yXShodHRwczovL2dpdGh1Yi5jb20vZmFudGFzeWxhbmQvZmFudGFzeS1sYW5kI2Z1bmN0b3IpIGluXG4gKiBhZGRpdGlvbiB0byBhcnJheXMsIGFzIGl0IGlzIGVxdWl2YWxlbnQgdG8gYG1hcChwcm9wKGspLCBmKWAuXG4gKiBAc2luY2UgNS4wLjAtYmV0YS42XG4gKiBAbWVtYmVyT2YgbG9vcFxuICpcbiAqIEBmdW5jXG4gKiBAZm9yayB2MC4xLjBcbiAqIEBjYXRlZ29yeSBMaXN0XG4gKiBAc2lnIEZ1bmN0b3IgZiA9PiBrIC0+IGYge2s6IHZ9IC0+IGYgdlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfFN0cmluZ30gcGF0aCBUaGUga2V5IG5hbWUgdG8gcGx1Y2sgb2ZmIG9mIGVhY2ggb2JqZWN0LlxuICogQHBhcmFtIHtBcnJheX0gZnVuY3Rvckxpc3QgVGhlIGFycmF5IG9yIGZ1bmN0b3IgdG8gY29uc2lkZXIuXG4gKiBAcmV0dXJuIHtBcnJheX0gVGhlIGxpc3Qgb2YgdmFsdWVzIGZvciB0aGUgZ2l2ZW4ga2V5LlxuICpcbiAqIEBzZWUgZnAvcHJvcHNcbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vcmFtZGEvcmFtZGEvYmxvYi9tYXN0ZXIvc3JjL3BsdWNrLmpzIHJhbWRhLXBsdWNrfVxuICogQHNlZSB7QGxpbmsgcmFtZGEtcGx1Y2t9XG4gKlxuICogQHN5bWIgcGx1Y2soJ3gnLCBbe3g6IDEsIHk6IDJ9LCB7eDogMywgeTogNH0sIHt4OiA1LCB5OiA2fV0pID0gWzEsIDMsIDVdXG4gKiBAc3ltYiBwbHVjaygwLCBbWzEsIDJdLCBbMywgNF0sIFs1LCA2XV0pID0gWzEsIDMsIDVdXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIHBsdWNrKCdhJykoW3thOiAxfSwge2E6IDJ9XSk7IC8vPT4gWzEsIDJdXG4gKiAgICAgIHBsdWNrKDApKFtbMSwgMl0sIFszLCA0XV0pOyAgIC8vPT4gWzEsIDNdXG4gKiAgICAgIHBsdWNrKCd2YWwnLCB7YToge3ZhbDogM30sIGI6IHt2YWw6IDV9fSk7IC8vPT4ge2E6IDMsIGI6IDV9XG4gKlxuICovXG5mdW5jdGlvbiBfcGx1Y2socGF0aCwgZnVuY3Rvckxpc3QpIHtcbiAgcmV0dXJuIG1hcChwcm9wKHBhdGgpLCBmdW5jdG9yTGlzdClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjdXJyeSgyLCBfcGx1Y2spXG4iXSwibmFtZXMiOlsiY29uc3QiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUM7QUFDckNBLEdBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0FBQ3ZDQSxHQUFLLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUM3QixTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0VBQ2pDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLENBQUM7Q0FDcEM7O0FBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQzsifQ==