code: function groupBy (obj, iterate, context) {
    var groupKey
    var result = {}
    if (obj) {
      context = this || context
      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
  }
docs: 集合分组,默认使用键值分组,如果有iterate则使用结果进行分组
  
  @param {Array} obj 对象
  @param {Function} iterate 回调/对象属性
  @param {Object} context 上下文
  @return {Object}