Попробуйте с помощью forEach
const results = document.getElementById('result');
const data = [{
meal: 'meal-1',
description: 'desc-1',
price: 'price-1'
},
{
meal: 'meal-2',
description: 'desc-2',
price: 'price-2'
},
{
meal: 'meal-3',
description: 'desc-3',
price: 'price-3'
}
]
data.forEach(product => {
results.innerHTML += `
<div class="result">
<h3>${product.meal}</h3>
<p>${product.description}</p>
<p>${product.price}</p>
</div>
`
})
<section id="b">
<h2>All Meals</h2>
<div id="result" class="result"></div>
</section>
Если вы намереваетесь использовать map
, тогда вместо доступа к dom для добавления каждого элемента вы можете join
с разделителем ,
и затем добавить dom после завершения итерации
const results = document.getElementById('result');
const data = [{
meal: 'some meal-1',
description: 'some desc-1',
price: 'some price-1'
},
{
meal: 'some meal-2',
description: 'some desc-2',
price: 'some price-2'
},
{
meal: 'some meal-3',
description: 'some desc-3',
price: 'some price-3'
}
]
let view = data.map((product) => {
return `<div class="result">
<h3>${product.meal}</h3>
<p>${product.description}</p>
<p>${product.price}</p>
</div>`
}).join(',');
results.innerHTML = view;
<section id="b">
<h2>All Meals</h2>
<div id="result" class="result"></div>
</section>