如果没有在for循环中输入语句

时间:2015-06-12 14:43:40

标签: javascript json geojson

我有一个geojson文件,其地震点功能需要根据地震的震级进行设计。 switch语句可以正常工作,但我认为可以更好地完成很多代码:

switch (feature.properties.mag){
            case 1.0 : return layer.setRadius(5);
            case 1.1 : return layer.setRadius(5);
            case 1.2 : return layer.setRadius(5);
            case 1.3 : return layer.setRadius(5);
            case 1.4 : return layer.setRadius(5);
            case 1.5 : return layer.setRadius(5);
            case 1.6 : return layer.setRadius(5);
            case 1.7 : return layer.setRadius(5);
            case 1.8 : return layer.setRadius(5);
            case 1.9 : return layer.setRadius(5);
            case 2.0 : return layer.setRadius(8);
            case 2.1 : return layer.setRadius(8);
            case 2.2 : return layer.setRadius(8);
            case 2.3 : return layer.setRadius(8);
            case 2.4 : return layer.setRadius(8);
            case 2.5 : return layer.setRadius(8);
            case 2.6 : return layer.setRadius(8);
            case 2.7 : return layer.setRadius(8);
            case 2.8 : return layer.setRadius(8);
            case 2.9 : return layer.setRadius(8);
            case 3.0 : return layer.setRadius(10);
            case 3.1 : return layer.setRadius(10);
            case 3.2 : return layer.setRadius(10);
            case 3.3 : return layer.setRadius(10);
            case 3.4 : return layer.setRadius(10);
            case 3.5 : return layer.setRadius(10);
            case 3.6 : return layer.setRadius(10);
            case 3.7 : return layer.setRadius(10);
            case 3.8 : return layer.setRadius(10);
            case 3.9 : return layer.setRadius(10);
            case 4.0 : return layer.setRadius(15); 
            case 4.1 : return layer.setRadius(15);
            case 4.2 : return layer.setRadius(15);
            case 4.3 : return layer.setRadius(15);
            case 4.4 : return layer.setRadius(15);
            case 4.5 : return layer.setRadius(15);
            case 4.6 : return layer.setRadius(15);
            case 4.7 : return layer.setRadius(15);
            case 4.8 : return layer.setRadius(15);
            case 4.9 : return layer.setRadius(15);
            case 5.0 : return layer.setRadius(20);
            default: layer.setRadius(8);
        }

我认为for循环可能会被条件语句所占用,因为所有的点都是相同的样式而不是else值:

for (var i=0; i<feature.properties.length; i++){
            if (1.0 <= feature.properties.mag < 2.0){
                 return layer.setRadius(5);
            }

            else if (2.0 <= feature.properties.mag < 3.0){
                 return layer.setRadius(8);
            }

            else if (3.0 <= feature.properties.mag < 4.0){
                 return layer.setRadius(10);
            }

            else if (4.0 <= feature.properties.mag < 5.0){
                 return layer.setRadius(15);
            }

            else{
                 return layer.setRadius(2);
            }
            }

2 个答案:

答案 0 :(得分:3)

首先,你的条件不对。尝试像这样设置下限和上限。

if (feature.properties.mag >= 1.0 && feature.properties.mag < 2.0){
    return layer.setRadius(5);
}
// the rest similar to the above

除非我们没有看到更多feature.properties,否则for循环是不必要的。

答案 1 :(得分:0)

为什么不在feature.properties.mag?

上使用Math.floor()
switch (Math.floor(feature.properties.mag)){
       case 1.0 : return layer.setRadius(5);
       case 3.0 : return layer.setRadius(10);
       case 4.0 : return layer.setRadius(15); 
       case 5.0 : return layer.setRadius(20);
       default: return layer.setRadius(8);
}

Switch是long if-elseif链的替代品

相关问题