Skip to content

Instantly share code, notes, and snippets.

@eethann
Created August 23, 2012 01:05
Show Gist options
  • Star 31 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save eethann/3430971 to your computer and use it in GitHub Desktop.
Save eethann/3430971 to your computer and use it in GitHub Desktop.
Underscore mixin with common iterator functions adapted to work with objects and maintain key/val pairs.
_.mixin({
// ### _.objMap
// _.map for objects, keeps key/value associations
objMap: function (input, mapper, context) {
return _.reduce(input, function (obj, v, k) {
obj[k] = mapper.call(context, v, k, input);
return obj;
}, {}, context);
},
// ### _.objFilter
// _.filter for objects, keeps key/value associations
// but only includes the properties that pass test().
objFilter: function (input, test, context) {
return _.reduce(input, function (obj, v, k) {
if (test.call(context, v, k, input)) {
obj[k] = v;
}
return obj;
}, {}, context);
},
// ### _.objReject
//
// _.reject for objects, keeps key/value associations
// but does not include the properties that pass test().
objReject: function (input, test, context) {
return _.reduce(input, function (obj, v, k) {
if (!test.call(context, v, k, input)) {
obj[k] = v;
}
return obj;
}, {}, context);
}
});
@boycce
Copy link

boycce commented Jun 16, 2014

Thanks dude.

@paulmelnikow
Copy link

Hey, I'd like to package this. Can you add a license?

@paulmelnikow
Copy link

Hey, just following up. Would you mind adding a license to this gist? Underscore uses MIT, or you could put it in the public domain. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment