簡體   English   中英

Javascript for 循環查找之前、相等、之間和之后的值?

[英]Javascript for loop finding before, equal, between and after values?

我覺得我錯過了一些明顯的東西。 這是一個簡單的例子來說明我的問題。

我希望 current = 3 返回“之前”。 current = 4 應該返回'key-two,current = 5 應該返回'between',current = 7 應該返回'key-two' current = 8 應該返回'after'。

此代碼未按預期工作。 將 current 設置為 7 返回 'key-two',將其設置為 8 或更大返回 'after' 將其設置為任何其他數字返回之間。

 let items = [] items['key-one'] = 4 items['key-two'] = 7 let current = 3 let results = '' for(let key in items) { let keyOne = '' let keyTwo = '' if (key === 'key-one') { keyOne = items[key] } if (key === 'key-two') { keyTwo = items[key] } if (current < keyOne) { results = 'before' } else if (current === items[key]) { results = key } else if (current > keyOne && current < keyTwo) { results = 'between' } else if (current > keyTwo) { results = 'after' } } document.write(results)

您基本上不需要那個 for 循環。 試試下面這個代碼

 let items = {}; items['key-one'] = 4 items['key-two'] = 7 let current = 4 let results = '' let keyOne = items['key-one']; let keyTwo = items['key-one']; if (current < keyOne) { results = 'before' } else if (current === keyOne) { results = "key-one"; }else if (current === keyTwo) { results = "key-two"; } else if (current > keyOne && current < keyTwo) { results = 'between' } else if (current > keyTwo) { results = 'after' } document.write(results)

每次循環迭代時,您都有效地創建了一個新變量。 keyOnekeyTwo放在循環之外。

 let items = [] items['key-one'] = 4 items['key-two'] = 7 let current = 3 let results = '' let keyOne = '' let keyTwo = '' for(let key in items) { if (key === 'key-one') { keyOne = items[key] } if (key === 'key-two') { keyTwo = items[key] } if (current < keyOne) { results = 'before' } else if (current === items[key]) { results = key } else if (current > keyOne && current < keyTwo) { results = 'between' } else if (current > keyTwo) { results = 'after' } } document.write(results)

這足以讓您現有的代碼工作,但還有很多可以改進的地方。 考慮這個方法..

 function positionInRange(point, low, high){ return point > high ? "after" : point < low ? "before" : point > low && point < high ? "between" : point == low ? "key-1" : "key-2" } var items = { "key-1": 4, "key-2": 7 } var results = positionInRange(3, items['key-1'], items['key-2']); document.write(results)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM