Javascript Lo破折号,数组和集合之间的差异
浏览一下Lo Dash文档,可以发现API分为以下几类:Javascript Lo破折号,数组和集合之间的差异,javascript,backbone.js,lodash,Javascript,Backbone.js,Lodash,浏览一下Lo Dash文档,可以发现API分为以下几类: 阵列 锁链 收藏 功能 对象 公用事业 方法, 和属性 对Arrays API的更详细了解显示了大约30种适用于阵列的不同方法 Collections API比Arrays API有更多的方法,并且它们不共享相同的方法 在Collections API中,集合被描述为迭代的对象,可以是数组: 集合(数组|对象|字符串):要迭代的集合 另外,有趣的是,还有一个Collections API方法\uu.toArray,它从集合返回一个数组:
\uu.toArray
,它从集合返回一个数组:
论据
集合(数组|对象|字符串):要转换的集合。返回
(数组):返回新转换的数组
是否有人知道Lo Dash API中数组和集合之间的形式差异?我认为这是由于Backbone.js造成的差异,但是,我现在质疑我的推理,因为这些方法可能在其他地方可用。提前感谢。最好看一看更详细的,从中可以得出这种区别。它说: 集合函数用于数组、对象和类似数组的对象,如
参数
、节点列表和类似对象。但它通过duck类型工作,因此避免传递带有数值length
属性的对象
基本上,“集合”是实现某种“iterable”接口的东西,它们在内部使用相同的迭代方法(尽管Lodash源代码比下划线更复杂)。所有的“收集方法”都适用于数组和对象(以及一些更合适的东西),而数组方法应该只适用于数组(或者所有具有
.length
和数字索引的对象),而对象方法适用于任何对象。所有数组都是收集,但并非所有收集都是数组。对象(即{k:v,…}
)是不是数组的集合。许多迭代器可以在非数组集合上进行迭代。在此上下文中,您可以将数组或多或少地看作是由连续非负整数索引的有序集合
例如,这两项工作:
_([6, 11, 23]).each(function() {
console.log(arguments);
});
_({ a: 6, b: 11, c: 23 }).each(function() {
console.log(arguments);
});
演示:
函数得到的参数取决于您迭代的对象类型。如果你在一个数组上迭代,那么你会得到元素和索引,如果你在一个对象上迭代,那么你会得到值和键。这是否意味着集合API的所有方法都可以应用到数组、字符串和对象上?它们应该可以处理任何可以迭代的东西,所以是的。谢谢@mu太短了!