Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вывести в DOM из двух массивов (https://javascript.ru/forum/dom-window/84064-vyvesti-v-dom-iz-dvukh-massivov.html)

Judgin 24.05.2022 12:42

Вывести в DOM из двух массивов
 
Нужно вывести на страницу название фильма и постер, а также динамически создать кнопку для каждого фильма. Названия и постеры находятся в разных массивах. С выводом только названия проблем не возникает (на скриншоте красными стрелками, между названием и кнопкой, отмечены места куда должны выводится постеры), а вот вывести постеры не получается.

https://drive.google.com/file/d/1pSu...ew?usp=sharing

Используя метод map, не знаю как вывести постеры из другого массива

document.getElementById(movieL).innerHTML = '<h3>'+ arr_RU[k] +'</h3><ul class="category-list clearfix">' + arrFinal.map(function (wizard) {
	return '<li id = '+ k +' class="category-item"><a href="https://ru.wikipedia.org//wiki/'+ wizard + '">' + wizard + '</a><div id="btn"><button onclick="openLink(this)" id="btn">Смотреть фильм</button></div></li>';
}).join('') + '</ul>';


Если же я создаю объект из 2-х массивов и вывожу его используя код приведенный ниже, то заголовок <h3> оказывается в цикле и выводится большее кол-во раз чем требуется.

for(let objValues in obj){
    val += '<h3>'+ arr_RU[k] +'</h3><ul class="category-list clearfix"><li id = '+ k +' class="category-item"><a href="https://ru.wikipedia.org//wiki/'+ objValues + '">' + objValues + '</a><img src = '+ obj[objValues] +'><div id="btn"><button onclick="openLink(this)" id="btn">Смотреть фильм</button></div></li></ul>';
}
document.getElementById(movieL).innerHTML = val;


Как решить данную проблему?

ksa 24.05.2022 13:55

Цитата:

Сообщение от Judgin
Используя метод map, не знаю как вывести постеры из другого массива

Как пример...
const a =[{name: 'a1'}, {name: 'a2'}]
	let b =[{name: 'b1'}, {name: 'b2'}]
	b = b.map((el, i) => {
		el.a = a[i]
		return el
	})
	console.log(b)

Judgin 27.05.2022 20:44

Цитата:

Сообщение от ksa (Сообщение 545608)
Как пример...
const a =[{name: 'a1'}, {name: 'a2'}]
	let b =[{name: 'b1'}, {name: 'b2'}]
	b = b.map((el, i) => {
		el.a = a[i]
		return el
	})
	console.log(b)

Вы привели как пример код, который создает массив объектов из двух массивов. Но у меня проблема заключается не в создании такого массива, а в выводе такого или другого по структуре массива. Если я использую метод map(cм.выше) и вывожу из массива (см.скриншот массива ниже) только названия фильмов, то все выводится. Т.е я указываю параметр функции wizard и соответственно создается секция с заголовком "A" в нее выводятся все названия фильмов на букву "A" и так далее по алфавиту. Но если в параметр wizard передается только один массив, то если мне нужно вывести еще постеры из другого массива, то как быть? Может в этом случае, код который я привел выше не годится и нужно выводить как-то иначе?

https://drive.google.com/file/d/1G6a...ew?usp=sharing


Часовой пояс GMT +3, время: 14:23.