Это код решения из упражнения в книге «Красноречивый 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
? Каково значение локальной переменной person
в рамках метода filter
и метода forEach
.
Ваш первый и третий параграфы были полезны. Однако мне нужно уточнить ваш второй абзац. Я на правильном пути, когда я говорю, что метод «forEach» создает соединение, в котором говорится, что «Джейн Доу» является матерью «john doe»?Если да, то как это делается? Синтаксис 'byName [person.name] = person;' все еще меня смущает. –