Undercore:使用集合方法包裹数组
Underscore: Wrap array with collection methods
我有一个充满对象的数组:
var myArray = [{ "user": "anton" }, { "user": "joe" }];
我现在想把数组包装成一个Underscore Collection对象,这样我就可以在本地使用Underscore的收集方法(remove,add):
myArray = _(myArray); // this only add object methods
myArray.add({ "user": "paul" });
那么,我如何用下划线包装数组以使用下划线收集方法
由于接受的答案拼写错误,因此记录:
在用作函数的undercore中,将包装其参数,即
_([a, b, c])
相当于:
_.chain([a, b, c])
事实上chain
被定义为:
_.chain = function(obj) {
return _(obj).chain();
};
现在回答您的问题:
您混淆了提供集合的Backbone和不提供集合的Undercore。主干集合可以很容易地从数组初始化,例如:
var c = new Backbone.Collection([{ "user": "anton" }, { "user": "joe" }]);
会很好用的。你可以进一步做:
c.add({ "user": "paul" });
通常下划线api不会包装数组或对象。只是传递它的第一个论点。ex)
_.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/#
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 数组在递归方法中设置为null
- 打破承诺链的好方法是什么
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 使用“;这个“;JavaScript原型方法中的关键字
- 序列化数据属性中对象的最可靠方法
- 使用Objective-C的JavaScript注入方法
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- toBoolean方法类似于toString
- 如何在单击复选框后调用控制器方法
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- toLocaleDateString和toLocaleString方法不尊重机器时区
- 有条件更新d3.js力图中节点的最佳方法
- Undercore:使用集合方法包裹数组
- 如何避免CoffeeScript方法变量被包裹在对象文字中