| 'use strict'; | |
| var CreateDataPropertyOrThrow = require('es-abstract/2024/CreateDataPropertyOrThrow'); | |
| var OrdinaryObjectCreate = require('es-abstract/2024/OrdinaryObjectCreate'); | |
| var forEach = require('es-abstract/helpers/forEach'); | |
| var GroupBy = require('es-abstract/2024/GroupBy'); // TODO: replace with es-abstract 2024 implementation | |
| module.exports = function groupBy(items, callbackfn) { | |
| var groups = GroupBy(items, callbackfn, 'PROPERTY'); // step 1 | |
| var obj = OrdinaryObjectCreate(null); // step 2 | |
| forEach(groups, function (g) { // step 3 | |
| CreateDataPropertyOrThrow(obj, g['[[Key]]'], g['[[Elements]]']); // steps 3.a - 3.b | |
| }); | |
| return obj; // step 4 | |
| }; |