group-by.js 503 B

123456789101112131415161718192021
  1. var each = require('./each');
  2. var isArray = require('./type/is-array');
  3. var hasOwnProperty = Object.prototype.hasOwnProperty;
  4. var groupBy = function groupBy(data, condition) {
  5. if (!condition || !isArray(data)) {
  6. return data;
  7. }
  8. var result = {};
  9. var key = null;
  10. each(data, function (item) {
  11. key = condition(item);
  12. if (hasOwnProperty.call(result, key)) {
  13. result[key].push(item);
  14. } else {
  15. result[key] = [item];
  16. }
  17. });
  18. return result;
  19. };
  20. module.exports = groupBy;