为了账号安全,请及时绑定邮箱和手机立即绑定

有大佬遇到过这个问题吗:JS获取区间值问题。大佬们有什么好的建议?

有大佬遇到过这个问题吗:JS获取区间值问题。大佬们有什么好的建议?

Helenr 2019-06-09 09:31:55
switch(voltage){casevoltage=11.10&&voltage=11.20&&voltage=11.30&&voltage=11.40&&voltage=11.50&&voltage=11.60&&voltage=11.70&&voltage=11.80&&voltage=11.90&&voltage=12.00&&voltage=12.10&&voltage=12.20&&voltage=12.30&&voltage=12.40&&voltage=12.50&&voltage=12.60&&voltage=12.70&&voltage=12.80&&voltage=12.90&&voltage=13.00:capacity='100'break;};现在写法如上,占用了太多空间,请教有没有简短的,或者更好的写法获取区间的值?
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

首先我们capacity和voltage是有规律的,即voltage每增长0.1,capacity就会增长5,根据这个规律,可以直接按照公式来计算:
functiongetCapacity1(voltage){
letcapacityBase=0;
letcapacityDiff=5;//增长度为5
letvoltageBase=11;
if(voltagereturncapacityBase;
}
returnMath.min(Math.floor((voltage-voltageBase)*10)*capacityDiff,100);
}
如果capacity是不规律增长的,可以设定一个数组,然后循环,判定voltage最后落到哪个区间里:
functiongetCapacity2(voltage){
//记得把data补全
letdata=[
{
max:11.0,
capacity:0
},
{
max:11.2,
capacity:5
},
{
max:11.3,
capacity:10
},
{
max:11.4,
capacity:15
},
{
max:Number.MAX_SAFE_INTEGER,//数字中的最大值
capacity:100
}
];
for(leti=0,len=data.length;iif(voltagereturndata[i].capacity;
}
}
}
最后我们来写一个循环调用刚才的方法,看看输出的是不是正确的:
for(leti=10.9;i<=13.2;i+=0.05){
console.log(i.toFixed(2),getCapacity1(i),getCapacity2(i));
}
                            
查看完整回答
反对 回复 2019-06-09
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

这样稍微减少一丢丢吧。
functionformatVoltage(voltage){
if(voltage<11.1){
return0
}elseif(voltage>13){
return100
}
returnparseInt(((parseInt(voltage*10)-111)+1)*5)
}
console.log(formatVoltage(11.1))//5
console.log(formatVoltage(13.1))//100
console.log(formatVoltage(12.45665412))//70
                            
查看完整回答
反对 回复 2019-06-09
  • 2 回答
  • 0 关注
  • 333 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信