我刚开始使用Javascript并使用Underscore库。我看到他们有各种各样的实用功能,比如_.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, {'id':1, 'name': 'jake'})) {
console.log("contains");
}
他们展示的大多数示例都有简单的数组,其中包含字符串或数字。我想知道我可以做些什么来使用像_.contains这样的实用函数来实现对象。感谢。
答案 0 :(得分:68)
contains
要求值与===
相当,不适用于不同的对象实例。
例如,如果您传递了正在搜索的确切对象,它将起作用,这不是很有用。
if (_.contains(indexes, indexes[0])) {
但您可以使用where
或findWhere
。
if (_.findWhere(indexes, {'id':1, 'name': 'jake'})) {
findWhere
是下划线1.4.4
中的新内容,因此如果您没有,请使用where
。
if (_.where(indexes, {'id':1, 'name': 'jake'}).length > 0) {
答案 1 :(得分:13)
您实际上想要使用_.where。
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");
}