のようなことを始めるときはいつでも_.f(_.g(...))
、の使用を検討する必要があります_.chain
。あなたはこのようなことをすることができます:
var a = _.chain(activities.toJSON())
.select(function(a) { return a.verb !== 'test' })
.map(function(a) { return a.object })
.value();
また、ロジックを調整して単純化したので、同じテストを2回行う必要はありません。関数を変数に入れると、この種のものを非常に読みやすくすることができます。
var not_tests = function(a) { return a.verb !== 'test' };
var extract_obj = function(a) { return a.object };
var results = _.chain(activities.toJSON())
.select(not_tests)
.map(extract_obj)
.value();
デモ: http: //jsfiddle.net/ambiguous/EQfuH/
このアプローチではかなりのコピーが行われるため、昔ながらの方法でループを使用することをお勧めします。
var json = activities.toJSON();
var a = [ ];
for(var i = 0; i < json.length; ++i)
if(json[i].verb !== 'test')
a.push(json[i].object);
JavaScriptのループには何の問題もありません。