You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
671 B
20 lines
671 B
'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 |
|
};
|
|
|