src/array/arraySumByKey.js

import * as _ from "lamb";

import arraySum from "./arraySum";

/**
 * Builds a function that sums the values in the given key in an array of objects.<br/>
 * The built function will throw a {@link TypeError} if the received array is empty.
 * @example
 * const scores = [
 *     { score: 7, user: "John" },
 *     { score: 9, user: "Jane" },
 *     { score: 5, user: "Mario" }
 * ];
 * const sumScores = arraySumByKey("score");
 *
 * sumScores(scores) // => 21
 *
 * @memberof module:@cgnal/utils/array
 * @since 0.0.5
 * @function
 * @param {String} key
 * @returns {Function} <code>Object[] => Number</code>
 */
const arraySumByKey = key => _.compose(arraySum, _.pluck(key));

export default arraySumByKey;