Код правильно работает с данными которые уже у него есть в Json, НО главная проблема в том что если нужно добавить новую валюту то приходиться добавлять коэффициенты для всех существующих. Как можно это автоматизировать?
{
"metr":{
"name": "metr",
"metr":1,
"kilometers": 0.01,
"inch": 0.039,
"foot": 0.32,
"sm": 100
},
"sm":{
"name": "sm",
"sm": 1,
"metr":0.01,
"kilometers": 1e-5,
"inch": 0.39,
"foot": 0.032
},
"kilometers":{
"name": "kilometers",
"metr":1000,
"sm": 10000,
"inch": 39370,
"foot": 3280
},
"inch":{
"name": "inch",
"metr":0.0254,
"sm": 2.54,
"kilometers": 2.54e-5,
"foot": 0.083
},
"foot":{
"name": "foot",
"metr":0.3048,
"sm": 30.48,
"kilometers": 0.0003048,
"inch": 12
}
}
let input = document.querySelector('.input');
let inputRes = document.querySelector('.input-result');
let select = document.querySelector('.select-distance');
let selectRes = document.querySelector('.select-distance-result');
let text = document.querySelector('.text');
async function getResponce(){
let response = await fetch('./app.json');
let measurement = await response.json();
let key;
let result;
for(key in measurement){
select.innerHTML +=`<option>${measurement[key].name}</option>`
selectRes.innerHTML +=`<option>${measurement[key].name}</option>`
};
input.addEventListener('input', () =>{
checkChange();
});
select.addEventListener('change', ()=>{
checkChange();
});
inputRes.addEventListener('input', () =>{
checkChange();
});
selectRes.addEventListener('change', ()=>{
checkChange();
});
function checkChange(){
for(key in measurement){
if(select.value == measurement[key].name){
let selectMeasurement = select.value;
let selectSecondMeasurement = selectRes.value;
result = multiply(input.value, measurement[selectMeasurement][selectSecondMeasurement]);
inputRes.value = result;
};
};
};
function multiply(inputValue, measurementNum){
return (inputValue*measurementNum).toFixed(2);
};
};