javascript - 接受函数的问题(对象或数组,迭代器)

标签 javascript

我想我最大的问题是关于参数“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);
    }
  }
};

最佳答案

两者都是lodashunderscore将其称为 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/

相关文章:

java - 如何在 GWT 中将 ScrollHandler 绑定(bind)到 body 上?

javascript - 使用递归获取嵌套对象中的所有父对象

JavaScript 验证 : return false not working at time of re Enter Password

javascript - 如何在选择某个选项后显示文本区域

javascript - Vue.js 是否有内置方法将持久对象的副本添加到重复数组

javascript - 我必须单击按钮两次才能提交

javascript - JS/J查询 : Initiate window resize without actually resizing

php - 如何在页面加载时加载 php 文件(提供 jQuery)

JavaScript 字谜比较

javascript - 在javascript中将匿名函数作为参数传递