这是“Eloquent JavaScript”书中的一个例子(我想你知道这本书):
function groupBy(array, groupOf) {
var groups = {};
array.forEach(function(element) {
var groupName = groupOf(element);
if (groupName in groups)
groups[groupName].push(element);
else
groups[groupName] = [element];
});
return groups;
}
var byCentury = groupBy(ancestry, function(person) {
return Math.ceil(person.died / 100);
});
代码做什么并不重要。
问题是:据我所知,groupBy
函数有两个不同的'body',即它做完全不同的事情。在第一个实例中,它做了很多逻辑,但第二次它,首先,有一个不同的第二个参数(函数(人)
而不是groupOf
,其次,它只是将一个数组元素属性(即39人数组中一个人的死亡日期)除以100。
为什么同一个函数做不同的事情?我确实理解
同一个函数的这两个实例以某种方式合作,但是这种合作的一般原则是什么?
谢谢!
第一个
function groupBy(array, groupOf) {}
是一个函数声明,其中函数的名称为 groupBy,并且可全局访问。
而第二个
var byCentury = groupBy(ancestry, function(person) {});
是函数调用。这里,返回值按世纪分配给变量。
可能您由于函数(人){}
而感到困惑。请注意,在Javascript中,我们有First Class Functions,这意味着函数被视为任何其他变量。因此函数作为参数传递给函数组By
下面的代码没有“重新定义”< code>groupBy。它只是简单地称之为:
var byCentury = groupBy(ancestry, function(person) {
return Math.ceil(person.died / 100);
});
groupBy
函数接收回调函数作为第二个参数 (groupOf
)。你在那里传递一个匿名函数,它返回Math.ceil(person.dieed / 100);
。
我每次都得到10个相同的结果:
问题内容: 我有两个并且彼此相关,例如,与“ e1.jpg”相关的“ H1.txt”。如何imgList根据的随机化自动对列表进行随机化?像在excel中一样,如果我们对某些列进行排序,其他列是否会自动跟随? 随机化后输出,例如: 预期的输出: 问题答案: 使用Collections.shuffle()两次,并Random用相同的种子初始化两个对象: 使用具有相同种子的两个对象可确保两个列表将以完
我想在中的包中使用功能,它有一个需求,作为
就像标题说的useFetch自定义钩子,我做了两次返回数据,我的意思是什么。当我console.log我获取的数据有两个输出,其中一个是空值,另一个是我想要的数据,因为有空值的数据,这是一个问题,因为我不能实现包含我想要的数据的表。下面是代码: 这就是我想使用我获取的数据的地方: 当我刷新页面时,有一个错误“数据为空”,如何修复?
是否可以将具有不同用户角色的用户重定向到laravel 5.1中的不同页面? 我研究了Auth中间件和Auth控制器,但没有发现任何处理登录请求本身的东西。 我发现了一些关于登录重定向在这里Laravel重定向回到原来的目的地后登录,但我不知道在哪里把建议的代码片段。 有人能帮我吗
我有一些测试方法: 当我尝试运行此方法时,出现了异常: 我怎么能嘲弄这种方法呢?