aug*_*uag 32 javascript backbone.js lodash
浏览一下Lo-Dash文档,可以看出API属于以下类别:
更详细地了解Arrays API,可以看到大约30种适用于数组的不同方法.
Collections API有比Arrays API更多的方法,它们不共享相同的方法.
在Collections API中,集合被描述为迭代的对象,可以是一个数组:
collection(Array | Object | string):要迭代的集合.
另外,有趣的是,有一个Collections API方法_.toArray从集合中返回一个数组:
参数
collection(Array | Object | string):要转换的集合.返回
(Array):返回新转换的数组.
有人会碰巧知道Lo-Dash API中数组和集合之间的形式差异吗?由于Backbone.js的原因,我认为这是一个区别,但是,现在我正在质疑我的推理,因为这些方法可能在其他地方可用.提前致谢.
Ber*_*rgi 32
查看更精细的Underscore.js文档是一个好主意,从中可以得出这种区别.它指出:
集合函数适用于数组,对象
arguments和类似数组的对象,如NodeList等.但它通过duck-typing工作,因此避免使用numericlength属性传递对象.
基本上,"集合"是实现某种"可迭代"接口的东西,它们在内部使用相同的迭代方法(尽管Lodash源比Underscore更复杂).所有"集合方法"都可以在数组和对象(以及一些可迭代的东西)上工作,而数组方法只能在数组上使用(或者可能只使用带有.length和数字索引的所有东西),并且对象方法适用于任何对象.
mu *_*ort 11
所有数组都是集合,但并非所有集合都是数组.对象(即{k: v, ... })是不是数组的集合.许多迭代器可以很好地迭代非数组集合.在此上下文中,您可以将数组视为或多或少地由连续的非负整数索引的有序集合.
例如,这两个工作:
_([6, 11, 23]).each(function() {
console.log(arguments);
});
_({ a: 6, b: 11, c: 23 }).each(function() {
console.log(arguments);
});
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/ambiguous/t8a83/
函数得到的参数取决于你迭代的东西.如果你在一个数组上进行迭代,那么你将获得元素和索引,如果你在一个Object上进行迭代,那么你将获得值和键.