Skip to content

Instantly share code, notes, and snippets.

@eethann
Created August 23, 2012 01:05
Show Gist options
  • Select an option

  • Save eethann/3430971 to your computer and use it in GitHub Desktop.

Select an option

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);
}
});
@eethann

eethann commented Aug 23, 2012

Copy link
Copy Markdown
Author

@eethann

eethann commented Sep 8, 2012

Copy link
Copy Markdown
Author

I added filter and reject, as per this issue: jashkenas/underscore#359.

And also because I needed it for the Drupal Backbone module.

@mikermcneil

Copy link
Copy Markdown

Nice

@Trylobot

Trylobot commented Sep 3, 2013

Copy link
Copy Markdown

Very useful, thank you

@mikermcneil

Copy link
Copy Markdown

+1 +1 +1
Can't even begin to describe how often I use these!!!

@jaredh159

Copy link
Copy Markdown

thanks for this

@boycce

boycce commented Jun 16, 2014

Copy link
Copy Markdown

Thanks dude.

@paulmelnikow

Copy link
Copy Markdown

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

@paulmelnikow

Copy link
Copy Markdown

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