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のようなユーティリティ関数を使用するために何ができるのかと思っていました。ありがとう。
contains
では、値が===
と比較可能である必要がありますが、これはオブジェクトの異なるインスタンスでは機能しません。
たとえば、検索するオブジェクトを正確に渡せば機能しますが、あまり役に立ちません。
if (_.contains(indexes, indexes[0])) {
ただし、where
またはfindWhere
を使用できます。
if (_.findWhere(indexes, {'id':1, 'name': 'jake'})) {
findWhere
はUnderscore 1.4.4
の新機能です。したがって、お持ちでない場合は、where
を使用できます。
if (_.where(indexes, {'id':1, 'name': 'jake'}).length > 0) {
実際には _。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");
}