Create a gist now

Instantly share code, notes, and snippets.

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