UNPKG

xe-utils

Version:

JavaScript 函数库、工具类

43 lines (39 loc) 1.07 kB
import isEmpty from './isEmpty' import isObject from './isObject' import isFunction from './isFunction' import property from './property' import each from './each' function createiterateEmpty (iterate) { return function () { return isEmpty(iterate) } } /** * 集合分组,默认使用键值分组,如果有iterate则使用结果进行分组 * * @param {Array} obj 对象 * @param {Function} iterate 回调/对象属性 * @param {Object} context 上下文 * @return {Object} */ function groupBy (obj, iterate, context) { var groupKey var result = {} if (obj) { if (iterate && isObject(iterate)) { iterate = createiterateEmpty(iterate) } else if (!isFunction(iterate)) { iterate = property(iterate) } each(obj, function (val, key) { groupKey = iterate ? iterate.call(context, val, key, obj) : val if (result[groupKey]) { result[groupKey].push(val) } else { result[groupKey] = [val] } }) } return result } export default groupBy