Javascript 如何简化这个switch语句?

Javascript 如何简化这个switch语句?,javascript,Javascript,出于某种原因,我必须偏移div的左上方位置。我已经开始创建这个switch语句,并注意到一种模式,当大于3时,将值递增一个数字,然后将下一个值递增最后一个偏移量-.11。我如何简化这段代码,也许创建一个公式或其他东西,而不是许多case语句 这是我的密码: matte_width_value是select语句的值 switch (matte_width_value) { case 2.25: offset = -.4; break;

出于某种原因,我必须偏移div的左上方位置。我已经开始创建这个switch语句,并注意到一种模式,当大于3时,将值递增一个数字,然后将下一个值递增最后一个偏移量-.11。我如何简化这段代码,也许创建一个公式或其他东西,而不是许多case语句

这是我的密码:

matte_width_value是select语句的值

    switch (matte_width_value)
    {
      case 2.25:
        offset = -.4;
        break;
      case 2.5:
        offset = -.7;
        break;
      case 2.75:
        offset = -1.1;
        break;
      case 3.25:
        offset = 1.35;
        break;
      case 3.5:
        offset = 1.24;
        break;
      case 3.75:
        offset = 1.12;
        break;
      case 4:
        offset = 1.01;
        break;
      //The cases will increment by .25 until it reaches <6
    }
    x = (matte_width_value + offset) * ppi; //ppi is defined elsewhere
    y = (matte_width_value + offset) * ppi;
开关(蒙版宽度值)
{
案例2.25:
偏移量=-0.4;
打破
案例2.5:
偏移量=-0.7;
打破
案例2.75:
偏移量=-1.1;
打破
案例3.25:
偏移量=1.35;
打破
案例3.5:
偏移量=1.24;
打破
案例3.75:
偏移量=1.12;
打破
案例4:
偏移量=1.01;
打破

//案例将增加0.25,直到它达到看起来像是查找表的案例

var mapping = {
    '2.25':  -.4,
    '2.5':   -.7,
    // and so forth
};

offset = mapping[ matte_width_value ];

这只是原来问题的一个解决办法。对于实际问题,可能有更好的解决方案。

你的最终解决方案是找出你为什么必须这样做。我猜你的CSS有问题,这是一个解决办法。出于某种原因,我必须为div偏移我的左上方位置。你必须偏移它,否则怎么办?你能解释一下什么是偏移吗它完成了?或者它没有居中。我将添加一个图像来向您展示我正在谈论的内容,并包括实际的html标记。@AllisonC:这听起来像是样式的问题,很可能不应该通过编程来解决。否则,一旦原始CSS再次更改,这可能会永远困扰您,将您拖入一个永远无法解决的问题CSS更新-->更改代码-->CSS更新-->更改代码-->等的周期。@Shanimal-值将始终是这些数字中的一个。如果这不可能是OP实际问题的最佳解决方案,那么作为一个注释并链接到其他数千个开关->查找表答案中的一个,不是更好吗?您可以编写一些解释ion.将对读者有所帮助:)
matte_width_value = 4;    
if (matte_width_value > 3) {  
    offset =1.35 - (((matte_width_value - 3.25) / .25) * .11);   
} else {  
    switch (matte_width_value)  
    {
        case 2.25:   
            offset = -.4;  
            break;   
        case 2.5:  
            offset = -.7;
            break;  
        case 2.75:  
            offset = -1.1;  
            break;  
    }  
}  
document.write(offset);
matte_width_value = 4;    
if (matte_width_value > 3) {  
    offset =1.35 - (((matte_width_value - 3.25) / .25) * .11);   
} else {  
    switch (matte_width_value)  
    {
        case 2.25:   
            offset = -.4;  
            break;   
        case 2.5:  
            offset = -.7;
            break;  
        case 2.75:  
            offset = -1.1;  
            break;  
    }  
}  
document.write(offset);