【问题标题】:How can I make getting this number more efficient我怎样才能让这个号码更有效
【发布时间】:2013-12-03 01:01:33
【问题描述】:

我正在编写一段代码来获取一家公司的面板价格。价格由 4 个变量决定。 1)priceLevel 2)gauge 3)color 4)panel。我将在下面发布我到目前为止所拥有的内容。代码工作正常,但我想知道是否有更简单、更有效的方法。面板的价格需要是 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 种可能的组合。

【问题讨论】:

  • 如果定价方式一致,例如所有零售价的利润率为 75%,承包商为 50%,批发价为 25%,那么您可以使用乘法而不是数据库来给出值.我觉得可能有一个方程式可以完全避免对数据库的需求,但我需要价目表来了解它是如何工作的。
  • 请不要告诉我gaugeSixgaugeSeven 等是ids of checkboxes...
  • 它们是针对一个电台组的,不存在与价格的确切相关性。
  • 在 jsfiddle.net 中创建一个演示,其中包含您的工作内容。更容易看到标记。使用遍历技术、类和一些数据属性将简化流程

标签: javascript arrays optimization


【解决方案1】:

好问题。

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

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;
    }
}

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-10
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多