亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有大佬遇到過這個問題嗎: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 關注
  • 343 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號