collection/groupBy.jsjavascript
import { entries, toIteratee } from '../_internal/iteratee'
/**
* 按 iteratee 结果将集合元素分组。
* @function groupBy
* @memberof module:collection
* @param {Array|Object} collection 要遍历的集合
* @param {Function|string|number|Array|Object} [iteratee] 分组函数或简写
* @returns {Object} 分组结果对象
* @throws {TypeError} 集合或 iteratee 类型不正确时抛出
*/
function groupBy(collection, iteratee) {
const fn = toIteratee(iteratee)
return entries(collection).reduce((result, [key, value]) => {
const group = String(fn(value, key, collection))
;(result[group] ??= []).push(value)
return result
}, {})
}
export default groupBy