我有一个充满对象的数组:

var myArray = [{ "user": "anton" }, { "user": "joe" }];


我现在想将数组包装到Underscore Collection对象中,这样我就可以自然地使用Underscore的collection方法(删除,添加):

myArray = _(myArray); // this only add object methods
myArray.add({ "user": "paul" });


那么我如何用下划线包装一个数组以使用下划线收集方法

最佳答案

通常,下划线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(obj))返回包装的对象。在使用value之前,对此对象的调用方法将继续返回包装的对象。

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/#

10-08 00:21