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章の練習からのものです。祖先内のデータはここには含まれません。私には2つの質問があります。Eloquent JavaScript第5章エクササイズ
私の最初の質問は、変数byName
についてのもので、forEach
メソッド内での使用方法についてです。何が起きているのかについての私の見解は、要素を見つけて何らかの形でbyName
オブジェクトにその要素を入力するために、祖先オブジェクトを反復処理しているということです(forEach
)。
変数differences
に関する別の質問があります。起こっていることの私の意見は、母親を持つ要素だけを選択して祖先オブジェクトを反復し、それが何らかの形で別の配列にマップされるということです。