2014-06-19 5 views
0

여러분! 현재 내가 다른으로 한 통화 변환이 아래의 코드를 작성했습니다,하지만 문제는 내가 작성해야 다음 변환 (100 개) 통화가있는 경우 내가javascript : 배열에서 통화를 변환하는 깨끗한 방법

, switch 블록에 의해 각 & 모든 통화를 정의하고있다 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=json&random=" + a.getTime() + "&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]); 
}); 

답변

5

를 사용하여 객체 속성 이름에 통화 이름을 매핑하는 객체 :

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); 
} 

FIDDLE

+0

당신을 감사합니다! 미안하다, 너 무슨 뜻인지 이해할 수 없어? 'r.length'는'r'입니까? 이 부분에 대한 간단한 텍스트 정보와 바이올린을 제공 할 수 있다면 매우 도움이 될 것입니다. - 고마워. – user2173803

+1

방금 ​​원본 코드에서 복사했습니다. 자신의 코드가 무엇을하는지 모르십니까? – Barmar

+0

'r = e.list.resources; ' – Barmar

관련 문제