アンダースコアを使用して、オブジェクトの配列にキー値があるかどうかを確認するにはどうすればよいですか。
例:
var objects = [
{id:1, name:'foo'},
{id:2, name:'bar'}
]
check(objects, {name: foo}) // true
マップを使用して作成する必要があると思います:
_.map(objects, function(num, key){ console.log(num.name) });
アンダースコアを使用して、オブジェクトの配列にキー値があるかどうかを確認するにはどうすればよいですか。
例:
var objects = [
{id:1, name:'foo'},
{id:2, name:'bar'}
]
check(objects, {name: foo}) // true
マップを使用して作成する必要があると思います:
_.map(objects, function(num, key){ console.log(num.name) });
これに使えますsome
。
check = objects.some( function( el ) {
return el.name === 'foo';
} );
check
true
関数が一度返された場合は、true
それ以外の場合はfalse
です。
ただし、IE7/8 ではサポートされていません。shim の MDN リンクが表示されます。
アンダースコア ライブラリについては、それも実装されているようです (のエイリアスですany
)。例:
check = _.some( objects, function( el ) {
return el.name === 'foo';
} );
http://underscorejs.org/#findを使用find
var check = function (thelist, props) {
var pnames = _.keys(props);
return _.find(thelist, function (obj) {
return _.all(pnames, function (pname) {
return obj[pname] == props[pname];
});
});
};