Как вызвать метод map у массива и вернуть значение каждого из элементов?
Нужно вывести лучшие фильмы выбранных режиссёров, которые хранятся в полях top_rated_film массива directors. Задача — создать новый массив topFilmsList, состоящий только из лучших фильмов режиссёров. Как вызвать метод map у массива directors и вернуть значение top_rated_film каждого из элементов?
const directorsList = document.querySelector('.directors');
const directorTemplate = document.querySelector('.director-template').content;
const directorsBestFilms = document.querySelector('.content__best-films');
const directors = [
{
name: 'Стивен Спилберг',
career: 'Продюсер, Режиссер, Актер, Сценарист, Монтажер',
films: 'https://datalens.yandex/vwlqd2afsifoq?f3d80b92-5f21-40fa-b8d8-7255e038d045=22260&c8e5e20f-9329-4545-8550-b096c5b41d16=producer',
top_rated_film: 'Список Шиндлера'
},
{
name: 'Кристофер Нолан',
career: 'Сценарист, Продюсер, Режиссер, Оператор, Монтажер, Актер, Композитор',
films: 'https://datalens.yandex/vwlqd2afsifoq?f3d80b92-5f21-40fa-b8d8-7255e038d045=41477&c8e5e20f-9329-4545-8550-b096c5b41d16=writer',
top_rated_film: 'Начало'
},
{
name: 'Виктор Шамиров',
career: 'Режиссер, Сценарист, Актер, Продюсер, Монтажер',
films: 'https://datalens.yandex/vwlqd2afsifoq?f3d80b92-5f21-40fa-b8d8-7255e038d045=558079&c8e5e20f-9329-4545-8550-b096c5b41d16=director',
top_rated_film: 'Со мною вот что происходит'
},
];
directors.forEach(function (element) {
const directorElement = directorTemplate.cloneNode(true);
directorElement.querySelector('.directors__name').textContent = element.name;
directorElement.querySelector('.directors__description').textContent = element.career;
directorElement.querySelector('.directors__films').href = element.films;
directorsList.append(directorElement)
})
const topFilmsList = directors.map(function (element) {
return // верните значение соответствующего поля здесь;
});
topFilmsList.forEach((function (element) {
directorsBestFilms.textContent = directorsBestFilms.textContent + element + ', ';
}))
Ответы (1 шт):
Автор решения: Alexandr Kiseloy
→ Ссылка
Метод map() создаёт новый массив с результатом вызова указанной функции для каждого элемента массива.
const topFilmsList = directors.map(function (element) { // <- element содержит при каждом проходе елемент массива directors и вы можете обращаться к нему
return // верните значение соответствующего поля здесь;
});
Т.е.
const topFilmsList = directors.map(function (element) {
return element.top_rated_film;
});
topFilmsList будет содержать массив только с фильмами.
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/map