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