通常、アンダースコアAPIは配列またはオブジェクトをラップしません。最初の引数を渡すだけです。元)
_.first([5, 4, 3, 2, 1]); //Note first argument
=> 5
var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
=> [2, 4, 6]
ただし、chain(_.chain(obj)
)はラップされたオブジェクトを返します。このオブジェクトのメソッドを呼び出すと、値が使用されるまでラップされたオブジェクトが返され続けます。
var stooges = [{name : 'curly', age : 25}, {name : 'moe', age : 21}, {name : 'larry', age : 23}];
var youngest = _.chain(stooges)
.sortBy(function(stooge){ return stooge.age; })
.map(function(stooge){ return stooge.name + ' is ' + stooge.age; })
.first()
.value();
=> "moe is 21"
アンダースコアAPIを確認してください:http://underscorejs.org/#