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;//增长度为5letvoltageBase=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));}
素胚勾勒不出你
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))//5console.log(formatVoltage(13.1))//100console.log(formatVoltage(12.45665412))//70
添加回答
举报
0/150
提交
取消