Created
August 23, 2012 01:05
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
_.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); | |
} | |
}); |
I added filter and reject, as per this issue: jashkenas/underscore#359.
And also because I needed it for the Drupal Backbone module.
Nice
Very useful, thank you
+1 +1 +1
Can't even begin to describe how often I use these!!!
thanks for this
Thanks dude.
Hey, I'd like to package this. Can you add a license?
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
See jashkenas/underscore#220