我认为我最大的问题是关于参数“迭代器”的问题。 我猜它接受一个功能。 我应该为该功能提供参数吗?
// Call iterator(value, key, collection) for each element of collection.
// Accepts both arrays and objects.
_.each = function(collection, iterator)
{
if (typeof collection=='object')
{
for(let i=0; i<Object.keys(collection).length; i++)
{
iterator(collection[i],Object.keys(collection)[i],collection);
}
}
else
{
for(let i=0; i<collection.length; i++)
{
iterator(collection[i],i,collection);
}
}
};
答案 0 :(得分:2)
lodash和underscore都将此称为 iteratee 而不是迭代器。这可能是为了避免与javascript迭代器混淆。
iteratee是一个将为您调用的函数。您定义了函数,each
将为集合中的每个项目调用它。该文档将告诉您该函数的签名应为什么样。例如,underscore
将(element, index, list)
传递给每个项目的函数。您可以自行编写函数并决定如何处理这些参数。
例如,来自Lodash的
_.forEach([1, 2], function(value) {
console.log(value);
});
iteratee是匿名函数,仅使用value
参数。