【发布时间】:2016-12-08 05:10:21
【问题描述】:
因此,Ruby 有一个 select 方法,它可以根据从块中传入的条件从数组中选择元素。
例如
arr = [1,2,3,4]
arr.select {|x| x.even? } => [2, 4]
我的问题涉及一个大数组,我只想选择一定数量的项目。例如,在数组中,我只想要符合条件的前 5 个数字。
arr.select{|x| x.even?}[0...5]
这是我目前所拥有的。这非常慢,因为 Ruby 在选择前五个元素之前对整个数组运行 select 函数。
我想看看是否有办法在选择前五个元素时停止选择功能。
例如,如果我能做到这一点
res = arr.select do |x|
x.even?
break if self.length > 5
end
在这种情况下,self 是对 res 数组的引用。我不认为该参考会起作用,但我希望它能够传达我的观点。
【问题讨论】:
标签: arrays ruby algorithm methods