Вместо этого используйте объекты, проиндексированные с помощью аббревиатур валюты:
const cursObj = {
USD: <value of cursUSD>,
EUR: <value of cursEUR>,
PLN: <value of cursPLN>
};
const rateElementsByCurrency = {
USD: rateone,
EUR: rateTwo,
PLN: rateThree
}
async function manipulDom(e) {
const URItwo = `https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?json`;
const response = await fetch(URItwo);
const data = await response.json();
data.forEach((obj) => {
const { cc } = obj;
if (cursObj[cc]) {
cursObj[cc] = obj.rate.toFixed(2);
rateElementsByCurrency[cc].textContent = obj.txt + ` ` + cursObj[cc] + `грн`;
// If you're familiar with template literals, then you can do instead:
// rateElementsByCurrency[cc].textContent = `${obj.txt} ${cursObj[cc]}грн`;
}
});
}
Поскольку data
- это массив , а не объект, итерируйте его с помощью forEach
- неиспользуйте ` for..in для перебора массивов.
Поскольку вы хотите поместить text в элементы rateElementsByCurrency
, а не в HTML, вы должны использовать textContent
вместо innerHTML
, это безопаснее, быстрее и более предсказуемо.