Ruby 迭代数组的前n个元素
如何迭代一个数组中最多四个对象而不是全部对象?在下面的代码中,它迭代所有对象。我只需要前四个对象Ruby 迭代数组的前n个元素,ruby,arrays,Ruby,Arrays,如何迭代一个数组中最多四个对象而不是全部对象?在下面的代码中,它迭代所有对象。我只需要前四个对象 objects = Products.all(); arr=Array.new objects.each do |obj| arr << obj end p arr 您可以像这样拼接阵列对象[0,4] 对象[0,4]的意思是:从索引0开始,给我数组中的4个元素 arr = objects[0,4].inject([]) do |array, obj| array <&
objects = Products.all();
arr=Array.new
objects.each do |obj|
arr << obj
end
p arr
您可以像这样拼接阵列
对象[0,4]
对象[0,4]
的意思是:从索引0开始,给我数组中的4个元素
arr = objects[0,4].inject([]) do |array, obj|
array << obj
end
p arr
arr=objects[0,4]。注入([])do |数组,obj|
数组我想rubyst的方法会过去的
arr=Array.new
objects[0..3].each do |obj|
arr << obj
end
p arr;
arr=Array.new
对象[0..3]。每个对象都有| obj|
arr返回可枚举的第一个n
元素
arr = objects[0..3]
就这些。您不需要其他元素您可以使用
arr = objects.first(n)
您只是想获取前四个对象,还是想迭代前四个对象?如果您只想在前n个对象上进行迭代,可以使用take
方法获取它们:对象。take(4)。每个对象都…
为什么不arr=Products.limit(4)。to a
(但您可能甚至不需要to a
)?每当你发现自己在说Model.all
时,你都应该三思而后行。@Yosef你想。。。另外,++
不是ruby操作符为什么inject
只要arr=objects[0,4]
就可以了?我假设OP想要迭代数组并做一些事情,而不仅仅是收集元素。为什么当justarr=objects[0..3]
做同样的事情时迭代呢?这是ruby的方式,但我观察到,与迭代整数索引(0到3)并通过它获取元素(objects[I[))相比,它的速度要慢得多。可能是因为复制工作“嘿,Ruby,你太狡猾了。”这与#first
有何不同?#first
只能用于数组
,而#take
可以用于任何可枚举
?
arr = objects.first(n)