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

求大佬指点哈!JS获取区间值问题。感激不尽

求大佬指点哈!JS获取区间值问题。感激不尽

墨色风雨 2019-07-27 00:35:36
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贡献1846条经验 获得超7个赞

首先我们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-07-27
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

这样稍微减少一丢丢吧。
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-07-27
  • 2 回答
  • 0 关注
  • 230 浏览
慕课专栏
更多

添加回答

举报

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