41

我刚刚开始使用 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 对象。谢谢。

4

2 回答 2

73

contains要求这些值具有可比性,===这些值不适用于不同的对象实例。

例如,如果您传递要搜索的确切对象,它会起作用,这不是很有用。

if (_.contains(indexes, indexes[0])) {

但是,您可以使用wherefindWhere

if (_.findWhere(indexes, {'id':1, 'name': 'jake'})) {

findWhere下划线是新的,1.4.4所以如果你没有它,你可以使用where.

if (_.where(indexes, {'id':1, 'name': 'jake'}).length > 0) {
于 2013-04-08T01:00:40.893 回答
14

您实际上想为此使用_.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");
}
于 2013-04-08T01:00:29.880 回答