2014-10-31 74 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