2014-10-31 73 views
-3

我應該如何接近的JavaScript(不能使用jQuery)使用這些範圍計算來更改價格:Calcuate價格範圍在Javascript

enter image description here

,我發現這個js fiddle但它使用jQuery的。這與我想要實現的非常相似,儘管我沒有看到範圍代碼,只是值。

ie:your price : 200 so multiple by 0.23參照圖表。所以如果我有價格200我想要得到值0.23

有沒有更簡單的方法,然後在下面的代碼做?

if (maxValue <= 100) { 
     minvalue = 250 
    } 

    if (maxValue <= 250) { 
     chartMaxY = 500 
    ... 

或者聲明值?

var pricerange = [100, 250,, 1000, 2500, 50000, ]; 


    if (maxValue <= pricerange[i]) { 
     minvalue = pricerange[i]; 
+1

我不明白這個問題。 。 。 – 2014-10-31 20:03:31

+0

無論你做什麼,確保你將所有的價值乘以100,做你的數學,然後除以100.道格拉斯克羅克福德告訴我。 – Gary 2014-10-31 20:04:25

+1

jQuery在這裏並不重要,你不用它這樣的東西。 – 2014-10-31 20:05:00

回答

2

你可以使用兩個數組,一個是範圍,另一個是你應該得到的值。例如:

var value = 1100; // is between 1000-2500 so we should get 0.20 
 
var chartValue; 
 

 
var priceRange = [ 100, 250, 1000, 2500, 5000 ]; 
 
var priceValue = [ 0.23, 0.12, 0.20, 0.19, 0.19 ]; 
 

 
for(range in priceRange) 
 
    if (value >= priceRange[range]) 
 
     chartValue = priceValue[range]; 
 

 
alert(chartValue)// Gives 0.20

此操作,因爲在檢測到較高範圍當一個新的值被分配。例如,上例中發生的情況如下:它高於100設置的圖表值爲0.23,它高於250設置的圖表值爲0.12,高於1000設置的圖表值爲0.20。但它不會大於2500,所以這將是最後一次更改。請注意,這是如何設置的,我們只使用了一個greater-than比較,並重新設置該值使得我們想要的範圍。

+0

我正在寫15個不同的if語句,它不工作。謝謝 – 2014-10-31 20:23:55

0

我可能會寫所有硬編碼值的兩個函數。

function fiveYear (price) { 
    if (price < 100) { 
    throw new Erorr('price must be at least 100') 
    } else if (price > 100 && price < 250) { 
    return 0.23 

    // .. etc .. 
} 

如果這些值經常發生變化,您需要想出一個更通用的解決方案,比如將值放入數據庫中。

+0

它是離線運行(實際上在ipad上),所以我不能使用數據庫。我明白你的意思。我會試着謝謝你。 – 2014-10-31 20:18:14

+0

爲什麼不使用帶有循環的數組? – 2014-10-31 20:33:16

+0

@SpencerWieczorek環路今天絕對更乾淨。業務邏輯通常會變得雜亂,所以我甚至不打擾。清理測試tho肯定。 – AJcodez 2014-11-07 00:06:36