I'm just getting started with Javascript and using the Underscore library. I see they have all sorts of utility function, like _.contains. Is there a way to make this work on objects?
var indexes = [ {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'}, {'id': 9, 'name': 'nick'}, {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'} ]; if (_.contains(indexes, {'id':1, 'name': 'jake'})) { console.log("contains"); }
Most of the examples they show have simple arrays with strings or numbers in them. I was wondering what I can do to use their utility functions like _.contains for objects. Thanks.
contains
requires the values to be comparable with ===
which will not work with different instances of objects.
For instance it would work if you passed the exact object you are searching for, which isn't very useful.
if (_.contains(indexes, indexes[0])) {
You can however use where
or findWhere
.
if (_.findWhere(indexes, {'id':1, 'name': 'jake'})) {
findWhere
is new in Underscore 1.4.4
so if you do not have it, you can use where
.
if (_.where(indexes, {'id':1, 'name': 'jake'}).length > 0) {
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With