Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
An implementation of reduce modeled after the underscore.js api that does not default to Array.prototype.reduce.
function reduce(obj, iterator, memo, ctx) {
var keys = Object.keys(obj),
memo = memo || obj[keys[0]];
ctx = ctx || null;
for (var i = arguments[2] ? 0 : 1; i < keys.length; i++)
memo =, memo, obj[keys[i]], keys[i], obj);
return memo;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment