我想我最大的问题是关于参数“iterator”。 我猜它接受一个函数。 我应该为该函数提供参数吗?
// 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);
}
}
};
最佳答案
两者都是lodash和 underscore将其称为 iteratee 而不是迭代器。这可能有助于避免与 javascript 迭代器混淆。
iteratee 是一个将为您调用的函数。您定义了函数,each
将为集合中的每个项目调用它。该文档将告诉您函数的签名应该是什么样子。例如,underscore
会将 (element, index, list)
传递给每个项目的函数。您可以编写函数并决定如何处理这些参数。
例如来自 Lodash:
_.forEach([1, 2], function(value) {
console.log(value);
});
iteratee 是匿名函数,它只使用 value
参数。
关于javascript - 接受函数的问题(对象或数组,迭代器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53863053/