Ruby:在ID数组中查找最低的自由ID

Coc*_*ton 3 ruby arrays loops arraylist

我有一个不同ID的数组从1到4000.我需要在数据库中添加一些元素,这些元素将包含在该数组中.由于可能的最大ID是4000(在我的情况下并不是那么多),我希望能够找到可用于我的新元素的最低未使用ID.

我知道如何在C++中做到这一点,但由于我是Ruby的新手,我正在寻求帮助.在C++中,我会写一个循环,我会检查array [i] == array [i + 1] - 1.如果不是这样,那么新的id将是array [i] + 1.

我不知道如何在Ruby中编写它.

非常感谢您的帮助.

Dyl*_*kow 6

使用范围,您可以找到不属于数组的第一个元素:

array = [1,2,3,5,6]
(1..4000).find { |i| !array.include?(i) }
# => 4
Run Code Online (Sandbox Code Playgroud)


saw*_*awa 5

array = [1, 2, 3, 5, 6]
(1..4000).to_a.-(array).min
Run Code Online (Sandbox Code Playgroud)