我有一个Ruby类
class MyClass
attr_writer :item1, :item2
end
my_array = get_array_of_my_class() #my_array is an array of MyClass
unique_array_of_item1 = []
Run Code Online (Sandbox Code Playgroud)
我要推MyClass#item1到unique_array_of_item1,但前提是unique_array_of_item1不包含item1尚未.我知道有一个简单的解决方案:只需迭代my_array并检查是否unique_array_of_item1已包含当前item1.
有没有更有效的解决方案?
Jas*_*ney 108
my_array | [item]
Run Code Online (Sandbox Code Playgroud)
并更新my_array到位:
my_array |= [item]
Run Code Online (Sandbox Code Playgroud)
doe*_*err 37
您不需要my_array手动迭代.
my_array.push(item1) unless my_array.include?(item1)
Run Code Online (Sandbox Code Playgroud)
编辑:
正如Tombart在评论中指出的那样,使用Array#include?效率不高.我会说小阵列的性能影响可以忽略不计,但你可能想要Set更大的阵容.