javascript массивы что возвращает функция

Читаю книгу выразительный js , в одном из заданий возник вопрос. Есть массив и функции для работы с ним.

  '{"name": "Carolus Haverbeke", "sex": "m", "born": 1832, "died": 1905, "father": "Carel Haverbeke", "mother": "Maria van Brussel"}',
  '{"name": "Emma de Milliano", "sex": "f", "born": 1876, "died": 1956, "father": "Petrus de Milliano", "mother": "Sophia van Damme"}',
 
].join(",\n  ") + "\n]";

   
// дальше функции 
 var ancestry = JSON.parse(ANCESTRY_FILE);

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 ) );

Вопрос: byName[получает сюда что? надпись в кавычках или обьект или что?] я пробовал вызвать console log (byName["имя человека".born]) выдает ошибку . Как работает это->

byName[person.mother].born;

Цитата


Ответы (1 шт):

Автор решения: ryzen

Как указали в комментариях, нужно почитать про доступ к свойствам объекта.

В массиве мы чаще всего получаем доступ через array[index].
В объекте через object.property и object['property'] или object[number].

const byName = {}
const data = [
  '{"name": "Carolus Haverbeke", "sex": "m", "born": 1832, "died": 1905, "father": "Carel Haverbeke", "mother": "Maria van Brussel"}',
  '{"name": "Emma de Milliano", "sex": "f", "born": 1876, "died": 1956, "father": "Petrus de Milliano", "mother": "Sophia van Damme"}',
  '{"name": "1", "sex": "f", "born": 1876, "died": 1956, "father": "Petrus de Milliano", "mother": "Sophia van Damme"}'
]

// Метод map() создаёт новый массив с результатом вызова указанной функции для каждого элемента массива.
// Метод JSON.parse() разбирает строку JSON, возможно с преобразованием получаемого в процессе разбора значения, проще говоря, конвертирует JSON в объект.

data.forEach(element => {
  const person = JSON.parse(element)
  byName[person.name] = person
})

console.log(byName[0]) // => undefined
console.log(byName[1]) // => object (потому что есть ключ "1") 
console.log(byName['Carolus Haverbeke'])// => object

→ Ссылка