[英]How would I rewrite this JavaScript loop in Ruby?
碼:
var some_var = [/*.......*/];
var compare_var;
for (var i = 0; i < some_var.length - 1; i++){
if (some_var[i] <= compare_var && compare_var < some_var[i + 1]){
return some_var[i];
}
}
some_var
一個值是30,下一個是40,下一個是50, compare_var
是42。
即使它小於42,也不會返回30,因為42不小於40。這也意味着它將返回40,因為它小於42,而42小於50。
編輯:
就像有人提到的那樣,代碼轉換對SE.so來說並不是很好。 為了明確起見:我確實嘗試了紅寶石中的幾種不同方法。 我在javascript方面有更多的經驗,所以我想表達我的問題的最佳方法是在javascript中寫出我需要的內容,以便可以看到它如何轉換成ruby。 感謝您的回答
我會使用neato Enumerable#each_cons(n)
方法 :
def foo(arr, x)
arr.each_cons(2) do |a,b|
return a if (a <= x) && (x < b)
end
nil # Not found
end
foo([30,40,50], 42) # => 40
基本上,這將為每個對創建一個“滑動窗口”,然后,當您發現包圍目標值(x)的對時,可以只返回該對的第一項。
這是單線的:
some_var.select{|v| v < compare_var}.max
擺脫var
關鍵字,將for
循環更改for
some_var.each
,您將在Ruby中獲得一個有效的代碼。
PS。 代碼轉換在StackOverflow中不正確
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.