#javascript #jquery #yahoo-finance
#javascript #jquery #yahoo-финансы
Вопрос:
Ребята! В настоящее время я написал приведенный ниже код, который преобразует одну валюту в другую, но проблема в том, что я определяю каждую и каждую валюту по одному в switch
блоке,
Если у меня есть 100 валют для конвертации, мне нужно написать 100 вариантов переключения, могу ли я сделать приведенный ниже код динамичным и коротким?
var currencies = {};
$(document).ready(function(){
yahoo_getdata();
});
function yahoo_getdata() {
var a = new Date();
var b = "http://someAPIurl.com/webservice/v1/symbols/allcurrencies/quote?format=jsonamp;random=" a.getTime() "amp;callback=?";
$.getJSON(b, function (e) {
if (e) {
var i, l, r, c;
r = e.list.resources;
for (i = 0, l = r.length; i < l; i = 1) {
c = r[i].resource.fields;
//console.log(c.name, c.price);
switch (c.name) {
case "USD/EUR":
currencies.EUR = c.price;
console.log('USD/EUR = ' c.price);
break;
case "USD/USD":
currencies.USD = c.price;
console.log('USD/USD = ' c.price);
break;
case "USD/JPY":
currencies.JPY = c.price;
console.log('USD/JPY = ' c.price);
break;
case "USD/INR":
currencies.INR = c.price;
console.log('USD/INR = ' c.price);
break;
}
}
console.log(currencies);
//console.log(e);
//var d = {};
}
});
}
$("#amount1").keyup(function() {
var
usd,
amount1 = $('#amount1').val(),
currency1 = $("#currency1").val(),
currency2 = $("#currency2").val();
// normalize to USD
usd = amount1 / currencies[currency1];
// convert to target currency
$('#amount2').val(usd * currencies[currency2]);
});
Ответ №1:
Используйте объект, который сопоставляет имя валюты с именем свойства объекта:
var currency_map = {
'USD/EUR': 'EUR',
'USD/USD': 'USD',
'USD/JPY': 'JPY',
...
};
Затем:
for (var i = 0, l = r.length; i < l; i ) {
c = r[i].resource.fields;
currencies[currency_map[c.name] || c.name] = c.price;
console.log(c.name ' = ' c.price);
}
Комментарии:
1. Спасибо! Извините, я не мог понять, что вы имеете в виду?
r.length
Чтоr
здесь? было бы очень полезно, если бы вы могли предоставить небольшую текстовую информацию и скрипку для этого. — Спасибо2. Я только что скопировал это из вашего исходного кода. Разве вы не знаете, что делает ваш собственный код?
3.
r = e.list.resources;