Javascript 下划线包含对象类型上的(u.contains)
我刚刚开始使用Javascript和下划线库。我看到它们有各种各样的效用函数,比如u.contains。有没有一种方法可以在对象上执行此操作Javascript 下划线包含对象类型上的(u.contains),javascript,underscore.js,Javascript,Underscore.js,我刚刚开始使用Javascript和下划线库。我看到它们有各种各样的效用函数,比如u.contains。有没有一种方法可以在对象上执行此操作 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
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");
}
他们展示的大多数示例都有简单的数组,其中包含字符串或数字。我想知道我能做些什么来使用它们的实用函数,比如对象的u.contains。谢谢。您可能真的想使用它
var indexes = [ {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'}, {'id': 9, 'name': 'nick'}, {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'} ];
if (_.where(indexes, {'id':1, 'name': 'jake'}).length) {
console.log("contains");
}
包含
要求值与不适用于不同对象实例的==
相比较
例如,如果您传递了您正在搜索的确切对象,它将起作用,这不是很有用
if (_.contains(indexes, indexes[0])) {
但是,您可以使用where
或findWhere
if (_.findWhere(indexes, {'id':1, 'name': 'jake'})) {
if (_.where(indexes, {'id':1, 'name': 'jake'}).length > 0) {
findWhere
在下划线1.4.4
中是新的,因此如果您没有它,可以使用where
if (_.findWhere(indexes, {'id':1, 'name': 'jake'})) {
if (_.where(indexes, {'id':1, 'name': 'jake'}).length > 0) {
实际上,你需要做
如果(u.where(/*…*/).length)
,就像.where
总是返回一个对象一样。u.findWhere()返回一个对象-u.where()返回一个数组-但是我确实忘记了一个“.length”是的:)直到我回答后才意识到我忘记了“.length”。更新了我的答案