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

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

input輸入時判定陣列值

input輸入時判定陣列值

幕布斯6054654 2019-05-12 08:54:06
我想在一個input透過陣列中使用二分搜尋,找到最相近的值,並在input變換成最相近的數值,該如何實現呢?假設陣列是[4,7,8]在input中輸入5他會自動變成4.求助大神!//二分搜尋法Array.prototype.binary_search=function(low,high,khey){if(low>high)return-1;varmid=parseInt((high+low)/2);if(this[mid]>khey)returnthis.binary_search(low,mid-1,khey);if(this[mid]
查看完整描述

2 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

Array.prototype.binary_search=function(target,low,high){
if(this.length<=1||target==null){returnthis[0]}
low=low>=0?Math.min(low,this.length-1):0
high=high>=0?Math.min(high,this.length-1):this.length-1
if(low>high){[low,high]=[high,low]}
if(low===high){returnthis[low]}
constmid=(low+high)/2|0
if(target===this[mid]){
returntarget
}
if(targetif(target>=this[mid-1]){
returnthis[mid]-target}else{
returnthis.binary_search(target,low,mid-1)
}
}
//if(target>this[mid]){
if(target<=this[mid+1]){
returntarget-this[mid]}else{
returnthis.binary_search(target,mid+1,high)
}
//}
};
console.log([4,7,8].binary_search(5))//4
console.log([4,7,8].binary_search(6))//7
console.log([4,7,8].binary_search(7))//7
console.log([4,7,8].binary_search(10000))//8
console.log([4,7,8].binary_search(-1))//4
console.log([4,7,8].binary_search())//4
console.log([].binary_search())//undefined
console.log([].binary_search(5))//undefined
                            
查看完整回答
反對 回復 2019-05-12
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

用迭代比較簡單,沒使用遞歸。
Array.prototype.binary_search_clo=function(khey){
varlow=0;
varhigh=this.length
varmid=parseInt((high+low+1)/2);
while(this[mid]!=khey&&lowif(this[mid]>khey){
high=mid-1;
}
elseif(this[mid]low=mid+1;
}
mid=parseInt((high+low)/2);
}
if(mid>0&&Math.abs(parseInt(this[mid]-khey))>Math.abs(parseInt(this[mid-1]-khey))){
mid=mid-1;
}
returnmid;
};
找到最后了,要與旁邊比較一下,哪個更接近。
                            
查看完整回答
反對 回復 2019-05-12
  • 2 回答
  • 0 關注
  • 377 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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