如果语句未输入 for 循环
If statement not being entered in for loop
我有一个 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);
}
}
首先,你的条件不对。像这样尝试设置下限和上限。
if (feature.properties.mag >= 1.0 && feature.properties.mag < 2.0){
return layer.setRadius(5);
}
// the rest similar to the above
除非有更多 feature.properties
我们没有看到,否则 for 循环是不必要的。
为什么不在 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 是长 if-elseif 链的替代品
我有一个 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);
}
}
首先,你的条件不对。像这样尝试设置下限和上限。
if (feature.properties.mag >= 1.0 && feature.properties.mag < 2.0){
return layer.setRadius(5);
}
// the rest similar to the above
除非有更多 feature.properties
我们没有看到,否则 for 循环是不必要的。
为什么不在 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 是长 if-elseif 链的替代品