2013-02-26 48 views
0

我對編程非常陌生,所以請原諒我的愚蠢問題。我已經建立了三個函數,根據相同的輸入「金額」計算稅率。我試圖找出一種方法,我可以讓用戶輸入一次金額並從三個函數中獲得回報。在這裏他們在下面。3返回一個輸入的計算器

//Function 1 
var normalrtfCalculator = function (amount) { 
    if (amount <= 150000) { 
    return Math.ceil(amount/500) * 2; 
    } else if (amount <= 350000) { 
    if ((amount - 150000) <= 50000) { 
     return 600 + (Math.ceil((amount - 150000)/500) * 3.35); 
    } else { 
     return 935 + (Math.ceil((amount - 200000)/500) * 3.9); 
    } 
    } else { 
    if ((amount - 200000) <= 350000) { 
     return 2735 + (Math.ceil((amount - 200000)/500) * 4.8); 
    } else if ((amount - 550000) <= 300000) { 
     return 4655 + (Math.ceil((amount - 555000)/500) * 5.3); 
    } else if ((amount - 850000) <= 150000) { 
     return 7835 + (Math.ceil((amount - 850000)/500) * 5.8); 
    } else { 
     return 9575 + (Math.ceil((amount - 1000000)/500) * 6.05); 
    } 
    } 
}; 
//Function 2 
var mansionTax = function (amount) { 
    if (amount > 1000000) { 
    return amount * 0.01; 
    } 
}; 
//Function 3 
var lowincomertfCalculator = function (amount) { 
    if (amount <= 350000) { 
    if (amount <= 150000) { 
     return (Math.ceil(amount/500)) * 0.5; 
    } else { 
     return 150 + (Math.ceil((amount - 150000)/500)) * 1.25; 
    } 
    } else { 
    if ((amount - 150000) <= 400000) { 
     return 420 + (Math.ceil((amount - 150000)/500) * 2.15); 
    } else if ((amount - 550000) <= 300000) { 
     return 2140 + (Math.ceil((amount - 550000)/500) * 2.65); 
    } else if ((amount - 850000) <= 150000) { 
     return 3730 + (Math.ceil((amount - 850000)/500) * 3.15); 
    } else { 
     return 4675 + (Math.ceil((amount - 1000000)/500) * 3.4); 
    } 
    } 
}; 

回答

1

只要有運行其他的人並返回結果的對象的功能:

var calculateTax = function(amount){ 
    return { 
    rtf : normalrtfCalculator(amount), 
    mansion: mansionTax(amnount), 
    lowincome: lowincomertfCalculator(amount) 
    } 
} 

那麼你可以這樣調用:

var tax = calculateTax(99999); 

要獲得個人結果您只需訪問屬性:

alert(tax.rtf)alert(tax.mansion)alert(tax.lowincome)

+0

大多數人會寫'function calculateTax(amount)'而不是'var calculateTax = function(amount)':) – 2013-02-26 02:54:52

+0

這完全取決於你所處的上下文,儘管差異在這裏並不重要。 – 2013-02-26 02:55:43

0

所需的最小更改可能少於在分配給變量之前添加()

喜歡的東西:

var amount = 100; 

//Function 2 
var mansionTax = (function() { 
    if (amount > 1000000) { 
     return amount * 0.01; 
    } 
})(); 

這裏是一個工作sample

這將消除定義任何附加功能的需要。