group-by.js 749 B

12345678910111213141516171819202122232425
  1. import isArray from './is-array';
  2. import isFunction from './is-function';
  3. var hasOwnProperty = Object.prototype.hasOwnProperty;
  4. function groupBy(data, condition) {
  5. if (!condition || !isArray(data)) {
  6. return {};
  7. }
  8. var result = {};
  9. // 兼容方法和 字符串的写法
  10. var predicate = isFunction(condition) ? condition : function (item) { return item[condition]; };
  11. var key;
  12. for (var i = 0; i < data.length; i++) {
  13. var item = data[i];
  14. key = predicate(item);
  15. if (hasOwnProperty.call(result, key)) {
  16. result[key].push(item);
  17. }
  18. else {
  19. result[key] = [item];
  20. }
  21. }
  22. return result;
  23. }
  24. export default groupBy;
  25. //# sourceMappingURL=group-by.js.map