如何才能提高这个数字的效率

时间:2013-12-02 16:51:36

标签: javascript arrays optimization

我正在编写一段代码来获取公司面板的价格。价格由4个变量决定。 1)priceLevel 2)仪表3)颜色4)面板。我将发布我到目前为止的内容。代码工作正常但我想知道是否有更简单,更有效的方式。面板的价格必须是var panelRate的值。

价格水平位置

var priceLevel;
if (retailPrice.checked)
{
    priceLevel=0;
}
else if (contractorPrice.checked)
{
    priceLevel=1;
}
else if (wholesalePrice.checked)
{
    priceLevel=2;
}

var gauge;
if (gaugeNine.checked)
{
gauge="0";
}
else if (gaugeSix.checked)
{
gauge="1";
}
else if (gaugeFour.checked)
{
gauge="2";
}
else if (gaugeTwo.checked)
{
gauge="3";
}
else if (gaugeSeven.checked)
{
gauge="4";
}

颜色和面板类型的定义与上面显示的其他两种类似,但颜色从0到6,面板类型从0到9。

然后我使用4个数字来查找数组中的位置(下方),它保存了我需要的价格。

var panelPrice=[];
panelPrice[0]=[];
panelPrice[0][1]=[];
panelPrice[0][1][0]=[];
panelPrice[0][1][0][0]=1.99;  //R,GU,29,TR
panelPrice[0][1][0][1]=2.99;  //R,GU,29,RP
panelPrice[0][1][0][2]=3.75;  //R,GU,29,C4
panelPrice[0][1][0][3]=4.33;  //R,GU,29,C2
panelPrice[0][1][0][4]=5.51;  //R,GU,29,5V
panelPrice[0][1][0][5];    //R,GU,29,SS
if (panelWidth=="16")
{
    panelPrice[0][1][0][5]=6.11;  
}
else if (panelWidth=="12")
{
    panelPrice[0][1][0][5]=10.06;
}
panelPrice[0][1][0][6]=6.89;  //R,GU,29,UP
panelPrice[0][1][0][7]=7.71;  //R,GU,29,SF

panelRate=panelPrice[priceLevel][colorUp][gauge][panelUp];

任何帮助都将受到赞赏,因为我有超过1100种可能的组合。

1 个答案:

答案 0 :(得分:0)

很棒的问题。

我会将这些不同的检查添加到数组中并循环遍历它们。尝试以下内容:

var prices = [retailPrice, contractorPrice, wholesalePrice],
    gauges = [gaugeNine, gaugeSix, gaugeFour, gaugeTwo, gaugeSeven],
    priceLevel, gauge;

// check prices
for (var i = 0; i < prices.length; i++) {
    if (prices[i].checked) {
        priceLevel = i;
        break;
    }
}

// check gauges
for (var i = 0; i < gauges.length; i++) {
    if (gauges[i].checked) {
        gauge = i;
        break;
    }
}

希望有所帮助!