Monday, May 20, 2024
43
rated 0 times [  45] [ 2]  / answers: 1 / hits: 72663  / 11 Years ago, mon, april 8, 2013, 12:00:00

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.


More From » underscore.js

 Answers
7

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) {

[#79065] Friday, April 5, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
loganl

Total Points: 424
Total Questions: 86
Total Answers: 112

Location: Zimbabwe
Member since Thu, Jul 21, 2022
2 Years ago
;