gpt4 book ai didi

javascript - 我将如何在 Ruby 中重写这个 JavaScript 循环?

转载 作者:太空宇宙 更新时间:2023-11-03 17:25:34 25 4
gpt4 key购买 nike

代码:

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。

它不会返回 30,即使它小于 42,因为 42 不小于 40。这也意味着它会返回 40,因为它小于 42 而 42 小于 50。

编辑:

正如有人提到的,代码翻译对 SE.so 来说并不是很好。只是说清楚:我确实在 ruby​​ 中尝试了几种不同的东西。不过,我在 javascript 方面有更多的经验,所以我能想到的最好的方式来表达我的问题是用 javascript 写下我需要的东西,这样我就可以看到它是如何翻译成 ruby​​ 的。谢谢解答

最佳答案

我会使用 neato Enumerable#each_cons(n) method :

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) 的对时,您可以只返回该对的第一项。

关于javascript - 我将如何在 Ruby 中重写这个 JavaScript 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12611279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com