Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 迭代数组的前n个元素_Ruby_Arrays - Fatal编程技术网

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想要迭代数组并做一些事情,而不仅仅是收集元素。为什么当just
arr=objects[0..3]
做同样的事情时迭代呢?这是ruby的方式,但我观察到,与迭代整数索引(0到3)并通过它获取元素(objects[I[))相比,它的速度要慢得多。可能是因为复制工作“嘿,Ruby,你太狡猾了。”这与
#first
有何不同?
#first
只能用于
数组
,而
#take
可以用于任何
可枚举
arr = objects.first(n)