Reduces `collection` to a value which is the accumulated result of running each element in `collection` thru `iteratee`, where each successive invocation is supplied the return value of the previous. If `accumulator` is not given, the first element of `collection` is used as the initial value. The iteratee is invoked with four arguments: (accumulator, value, index|key, collection). Many lodash methods are guarded to work as iteratees for methods like `reduce`, `reduceRight`, and `transform`. The guarded methods are: `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, and `sortBy`
reduce([1, 2], (sum, n) => sum + n, 0)
// => 3
reduce({ 'a': 1, 'b': 2, 'c': 1 }, (result, value, key) => {
(result[value] || (result[value] = [])).push(key)
return result
}, {})
// => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
| Name | Type | Attribute | Description |
|---|---|---|---|
| collection | The collection to iterate over. | ||
| iteratee | The function invoked per iteration. | ||
| accumulator | The initial value. |
*
{
"comment": "/**\r\n * Reduces `collection` to a value which is the accumulated result of running\r\n * each element in `collection` thru `iteratee`, where each successive\r\n * invocation is supplied the return value of the previous. If `accumulator`\r\n * is not given, the first element of `collection` is used as the initial\r\n * value. The iteratee is invoked with four arguments:\r\n * (accumulator, value, index|key, collection).\r\n *\r\n * Many lodash methods are guarded to work as iteratees for methods like\r\n * `reduce`, `reduceRight`, and `transform`.\r\n *\r\n * The guarded methods are:\r\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\r\n * and `sortBy`\r\n *\r\n * @since 0.1.0\r\n * @category Collection\r\n * @param {Array|Object} collection The collection to iterate over.\r\n * @param {Function} iteratee The function invoked per iteration.\r\n * @param {*} [accumulator] The initial value.\r\n * @returns {*} Returns the accumulated value.\r\n * @see reduceRight, transform\r\n * @example\r\n *\r\n * reduce([1, 2], (sum, n) => sum + n, 0)\r\n * // => 3\r\n *\r\n * reduce({ 'a': 1, 'b': 2, 'c': 1 }, (result, value, key) => {\r\n * (result[value] || (result[value] = [])).push(key)\r\n * return result\r\n * }, {})\r\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\r\n */",
"meta": {
"range": [
1439,
1676
],
"filename": "reduce.js",
"lineno": 38,
"path": "C:\\Users\\beaujeup\\projects\\jsdoc-template\\examples\\lodash\\lodash-repo",
"code": {
"id": "astnode100007518",
"name": "reduce",
"type": "FunctionDeclaration",
"paramnames": [
"collection",
"iteratee",
"accumulator"
]
},
"vars": {
"func": "reduce~func",
"initAccum": "reduce~initAccum"
}
},
"description": "Reduces `collection` to a value which is the accumulated result of running\reach element in `collection` thru `iteratee`, where each successive\rinvocation is supplied the return value of the previous. If `accumulator`\ris not given, the first element of `collection` is used as the initial\rvalue. The iteratee is invoked with four arguments:\r(accumulator, value, index|key, collection).\r\rMany lodash methods are guarded to work as iteratees for methods like\r`reduce`, `reduceRight`, and `transform`.\r\rThe guarded methods are:\r`assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\rand `sortBy`",
"since": "0.1.0",
"tags": [
{
"originalTitle": "category",
"title": "category",
"text": "Collection",
"value": "Collection"
}
],
"params": [
{
"type": {
"names": [
"Array",
"Object"
]
},
"description": "The collection to iterate over.",
"name": "collection"
},
{
"type": {
"names": [
"function"
]
},
"description": "The function invoked per iteration.",
"name": "iteratee"
},
{
"type": {
"names": [
"*"
]
},
"optional": true,
"description": "The initial value.",
"name": "accumulator"
}
],
"returns": [
{
"type": {
"names": [
"*"
]
},
"description": "Returns the accumulated value."
}
],
"see": [
"reduceRight, transform"
],
"examples": [
"reduce([1, 2], (sum, n) => sum + n, 0)\r// => 3\r\rreduce({ 'a': 1, 'b': 2, 'c': 1 }, (result, value, key) => {\r (result[value] || (result[value] = [])).push(key)\r return result\r}, {})\r// => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)"
],
"name": "reduce",
"longname": "reduce",
"kind": "function",
"scope": "global",
"___id": "T000002R000688",
"___s": true,
"filepath": "reduce.js"
}