-1
function average(array) {
function plus(a, b) { return a + b; }
return array.reduce(plus)/array.length;
}
var byName = {};
ancestry.forEach(function(person) {
byName[person.name] = person;
});
var differences = ancestry.filter(function(person) {
return byName[person.mother] != null;
}).map(function(person) {
return person.born - byName[person.mother].born;
});
console.log(average(differences));
// 31.2
这段代码来自“Eloquent JavaScript”一书的第5章练习。这里不包括祖先内的数据。我有两个问题。Eloquent JavaScript第5章练习
我的第一个问题是关于变量byName
以及它如何在forEach
方法中使用。我对发生的事情的看法是,forEach
方法通过祖先对象迭代来查找元素,然后以某种方式在byName
对象中输入所述元素。
我有关于变量differences
的另一个问题。我对发生的事情的看法是filter
方法迭代祖先对象,只选择具有母亲的元素,然后将其以某种方式映射到另一个数组中。