如何遍历跳过每一个元素的数组?

时间:2015-06-10 09:34:15

标签: ruby

如何在ruby中编写这种类型的for循环?

for(i = 0; i < arr.length; i = i+2) {
}

如果步骤为1,我知道如何编写它,但是如果步骤&gt; 1,如何制作?

6 个答案:

答案 0 :(得分:11)

您可以将.step大小实际指定为参数:

(0...arr.length).step(2) { |i| puts arr[i] }

答案 1 :(得分:10)

另一种方法是使用 Array::each_slice

 arr.each_slice(2) { |n| p n.first }

答案 2 :(得分:2)

(0...arr.length).step(2) do |n|
end

OR

for i in (0...arr.length).step(2) do
    puts arr[i]
end

步骤用于递增n值,此循环将持续到arr.length

答案 3 :(得分:2)

你也可以试试这个:

...
if(empty($username)) {
    echo "<span class='message error'>Please enter username.</span>";
    exit();
}
...

我喜欢已经回答的> arr = Array('a'..'z') #=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] > arr.select.each_with_index{|k,i| k if i.even?} #=> ["a", "c", "e", "g", "i", "k", "m", "o", "q", "s", "u", "w", "y"] step方法,所以这只是另一种方法。 ;)

答案 4 :(得分:0)

一百万种解决数组问题的方法。如果您实际上不需要循环,则可以轻松获取值

a = (0..20).to_a
a.values_at(*(0..a.size).step(2))
#=> => [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

答案 5 :(得分:0)

使用while循环可以按如下方式完成: -

#!/usr/bin/ruby
arr=[1,2,3,4,5,6]  
i=0
begin
    puts arr.at(i*2)
i += 1
puts "value of i is #{i}" 
end while (i*2) < arr.length