這是來自「Eloquent JavaScript」書中練習的解決方案代碼。這是代碼是從第5章,它是練習2.如何使用對象表示法來使用JavaScript構建新對象。
我知道byName
對象正在通過使用forEach
方法構建。我明白這一點。但是,對象括號表示法很難理解,因爲我不知道如何使用本地變量person
。
在可變differences
的filter
方法和map
方法正在使用,我明白如何被使用它們。但是,我不知道本地變量person
的值,我不知道如何使用byName
對象。
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
是如何byName
對象正在在filter
方法和forEach
方法併入?什麼是filter
方法中的局部變量person
和forEach
方法的價值。
您的第一段和第三段很有幫助。但是,我需要澄清你的第二段。當我說'forEach'方法創建了一個連接,指出「jane doe」是「john doe」的母親時,我是否在正確的軌道上?如果是這樣,這是如何做到的?語法'byName [person.name] = person;'仍然令我困惑。 –