2017-06-14 116 views
0

這甚至可能嗎?如何使字符串不可追加?

function from_country_to_country(country_from, country_to) { 
    // get the right zone prices 
    var zone_price = zone_finder(country_to['zone']); 
    $('#country_to_country').html(country_from['land']); 
    $('#call').html(formatPrice(country_from[zone_price]) + ' kr/min'); 
    $('#recieve').html(formatPrice(country_from['receive_calls']) + ' kr/min'); 
    $('#send_sms').html(formatPrice(country_from['send_sms']) + ' kr/SMS'); 
    $('#recieve_sms').html(formatPrice(country_from['receive_sms']) + ' kr/SMS'); 
    $('#opening_fee').html(formatPrice(country_from['opening_fee']) + ' kr'); 
} 

function within_the_country(country) { 
    $('#from_within').html(country['land']); 
    $('#from_domestic').html(formatPrice(country['domestic']) + ' kr/min'); 
    $('#from_RCF').html(formatPrice(country['receive_calls']) + ' kr/min'); 
    $('#from_send_sms').html(formatPrice(country['send_sms']) + ' kr/SMS'); 
    $('#from_recieve_sms').html(formatPrice(country['receive_sms']) + ' kr/SMS'); 
    $('#from_opening_fee').html(formatPrice(country['opening_fee']) + ' kr'); 
    $('#from_gprs_data').html(formatPrice(country['data_price'])+ ' kr/mb'); 
} 

// Format prices from ex: turns 1 into 1,00 
function formatPrice(n) { 
    if (!isNaN(parseFloat(n))) { 
     n = parseFloat(n); 
     n = Math.round(n * 100)/100 
     n = n.toFixed(2); 
     return n; 
    } else { 
     // IF WE CAN MAKE "n" NON-APPENDABLE HERE 
     return n; 
    } 
} 

如果n不是一個數字我不想' kr/mb'被附加到字符串。我知道我可以檢查它是否是一個數字,如果不是,不要追加。但我有很多不同的後綴,我追加到返回的字符串formatPrice()。那麼我需要到處檢查。有沒有一個很好的解決這個問題?

+3

字符串是不可變的,所以你不能改變他們,但是沒有辦法避免有人把你的字符串,並創建一個基於一個新的它。但爲什麼不只是將後綴作爲可選參數傳遞給formatPrice? –

+1

爲什麼不將'unit'作爲參數添加到'formatPrice'函數並修改它以返回一個字符串?你可以處理所有格式化邏輯(包括你在問什麼) – user3080953

+0

@ user3080953我不認爲我放棄明白你的意思。 Nvm,我理解完美! – vonhact

回答

3

調整你的formatPrice功能有條件參加單位:

function formatPrice(n, unit) { 
    if(!isNan(...)) { 
    ... 
    return n + " " + unit; 
    } 
    else { 
    return n; 
    } 
} 

formatPrice(500, 'kr/mb');