JSON. Денежные курсы

350
31 июля 2017, 14:52

У меня есть такой JSON ответ:

{
  "AUD": 44.95,
  "AZN": 33.73,
  "GBP": 73.42,
  "AMD": 0.12,
  "BYN": 30.96,
  "BGN": 32.01,
  "BRL": 18.8,
  "HUF": 0.2,
  "DKK": 8.42,
  "USD": 58.85,
  "EUR": 62.68,
  "INR": 0.88,
  "KZT": 0.18,
  "CAD": 44.74,
  "KGS": 0.85,
  "CNY": 8.55,
  "MDL": 2.94,
  "NOK": 7.02,
  "PLN": 14.55,
  "RON": 13.92,
  "ZZZ": 79.91,
  "SGD": 41.36,
  "TJS": 7.43,
  "TRY": 15.97,
  "TMT": 16.84,
  "UZS": 0.02,
  "UAH": 2.16,
  "CZK": 2.32,
  "SEK": 6.6,
  "CHF": 58.69,
  "ZAR": 4.4,
  "KRW": 0.05,
  "JPY": 0.52
}

Это курс рубля к другим валютам.

Функция должна принимать

  1. сумма (amount)
  2. конвертируемая валюта (from)
  3. валюта для получения (to)

Я решил переводить from в рубли, затем эту сумму делить на рубли по курсу to. Можете ли предложить более совершенное решение? И я не могу никак подставить курс к переменной, в которой находиться распарсеные данные.

function loadCurrencyJSON() { 
 
return '{"AUD":44.95,"AZN":33.73,"GBP":73.42,"AMD":0.12,"BYN":30.96,"BGN":32.01,"BRL":18.8,"HUF":0.2,"DKK":8.42,"USD":58.85,"EUR":62.68,"INR":0.88,"KZT":0.18,"CAD":44.74,"KGS":0.85,"CNY":8.55,"MDL":2.94,"NOK":7.02,"PLN":14.55,"RON":13.92,"ZZZ":79.91,"SGD":41.36,"TJS":7.43,"TRY":15.97,"TMT":16.84,"UZS":0.02,"UAH":2.16,"CZK":2.32,"SEK":6.6,"CHF":58.69,"ZAR":4.4,"KRW":0.05,"JPY":0.52}'; 
 
} 
// console.log(loadCurrencyJSON()); 
 
function convertCurrency(amount, from, to) { 
  let val = loadCurrencyJSON(); 
  let parseVal = JSON.parse(val); 
  let fromR = parseVal.from; 
  let toR = parseVal.EUR; 
  console.log(`${from} ${to}`); 
  console.log(fromR); 
  console.log(toR); 
   
} 
 
convertCurrency(300, 'USD', 'EUR');

Ссылка: https://repl.it/Jopt/2

Answer 1

Например, так:

var rates = { 
  "AUD": 44.95, 
  "AZN": 33.73, 
  "GBP": 73.42, 
  "AMD": 0.12, 
  "BYN": 30.96, 
  "BGN": 32.01, 
  "BRL": 18.8, 
  "HUF": 0.2, 
  "DKK": 8.42, 
  "USD": 58.85, 
  "EUR": 62.68, 
  "INR": 0.88, 
  "KZT": 0.18, 
  "CAD": 44.74, 
  "KGS": 0.85, 
  "CNY": 8.55, 
  "MDL": 2.94, 
  "NOK": 7.02, 
  "PLN": 14.55, 
  "RON": 13.92, 
  "ZZZ": 79.91, 
  "SGD": 41.36, 
  "TJS": 7.43, 
  "TRY": 15.97, 
  "TMT": 16.84, 
  "UZS": 0.02, 
  "UAH": 2.16, 
  "CZK": 2.32, 
  "SEK": 6.6, 
  "CHF": 58.69, 
  "ZAR": 4.4, 
  "KRW": 0.05, 
  "JPY": 0.52 
} 
 
function getRate(amount, from, to) { 
  return (amount * (rates[from] / rates[to])).toFixed(2); 
} 
console.log(getRate(100, 'KZT', 'EUR'));

В вашем случае это будет выглядеть так:

function loadCurrencyJSON() { 
 
  return '{"AUD":44.95,"AZN":33.73,"GBP":73.42,"AMD":0.12,"BYN":30.96,"BGN":32.01,"BRL":18.8,"HUF":0.2,"DKK":8.42,"USD":58.85,"EUR":62.68,"INR":0.88,"KZT":0.18,"CAD":44.74,"KGS":0.85,"CNY":8.55,"MDL":2.94,"NOK":7.02,"PLN":14.55,"RON":13.92,"ZZZ":79.91,"SGD":41.36,"TJS":7.43,"TRY":15.97,"TMT":16.84,"UZS":0.02,"UAH":2.16,"CZK":2.32,"SEK":6.6,"CHF":58.69,"ZAR":4.4,"KRW":0.05,"JPY":0.52}'; 
 
} 
// console.log(loadCurrencyJSON()); 
 
function convertCurrency(amount, from, to) { 
  let val = JSON.parse(loadCurrencyJSON()); 
  return (amount * (val[from] / val[to])).toFixed(2); 
 
} 
 
console.log(convertCurrency(300, 'USD', 'EUR'));

READ ALSO
Присвоить класс строке

Присвоить класс строке

На сайте есть такое меню

294
Возможно ли как-то закрыть функцию полностью, или сделать return для неё через другую функцию, которая в неё вложена

Возможно ли как-то закрыть функцию полностью, или сделать return для неё через другую функцию, которая в неё вложена

ЗдравствуйтеСтолкнулся с такой проблемой, что в одностраничном приложении использую разные функции и в зависиомти от ситуации запускаю...

249
Сортировка javascript

Сортировка javascript

Есть функция вывода списка пользователей:

289
Регулярное выражение на номер телефона javascript [требует правки]

Регулярное выражение на номер телефона javascript [требует правки]

Помогите с регулярным выражением, пожалуйста

280