group-to-map.js 789 B

12345678910111213141516171819202122232425
  1. var isFunction = require('./type/is-function');
  2. var isArray = require('./type/is-array');
  3. var groupBy = require('./group-by');
  4. var groupToMap = function groupToMap(data, condition) {
  5. if (!condition) {
  6. return {
  7. 0: data
  8. };
  9. }
  10. if (!isFunction(condition)) {
  11. var paramsCondition = isArray(condition) ? condition : condition.replace(/\s+/g, '').split('*');
  12. condition = function condition(row) {
  13. var unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序
  14. for (var i = 0, l = paramsCondition.length; i < l; i++) {
  15. unique += row[paramsCondition[i]] && row[paramsCondition[i]].toString();
  16. }
  17. return unique;
  18. };
  19. }
  20. var groups = groupBy(data, condition);
  21. return groups;
  22. };
  23. module.exports = groupToMap;