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.
28 lines
614 B
28 lines
614 B
// Inspired by Underscore's groupBy: |
|
// http://documentcloud.github.com/underscore/#groupBy |
|
|
|
"use strict"; |
|
|
|
var callable = require("../../object/valid-callable") |
|
, value = require("../../object/valid-value") |
|
, forEach = Array.prototype.forEach |
|
, apply = Function.prototype.apply; |
|
|
|
module.exports = function (cb /*, thisArg*/) { |
|
var result; |
|
|
|
value(this); |
|
callable(cb); |
|
|
|
result = Object.create(null); |
|
forEach.call( |
|
this, |
|
function (item) { |
|
var key = apply.call(cb, this, arguments); |
|
if (!result[key]) result[key] = []; |
|
result[key].push(item); |
|
}, |
|
arguments[1] |
|
); |
|
return result; |
|
};
|
|
|