这可能是非常基本的问题。
假设我有一个包含 19 个项目的数组[0,1,2,3,4..19]
。我怎么能只选择索引计数是给定数字的倍数,即 2?
更新:假设此代码旨在用于列。鉴于所有索引都是一的倍数,如何设法获取第一列的索引?
这可能是非常基本的问题。
假设我有一个包含 19 个项目的数组[0,1,2,3,4..19]
。我怎么能只选择索引计数是给定数字的倍数,即 2?
更新:假设此代码旨在用于列。鉴于所有索引都是一的倍数,如何设法获取第一列的索引?
选择给定数字的倍数的元素(如果您的元素等于索引则有效):
ary.select { |element| element % 2 == 0 }
在这种特殊情况下,您还可以使用符号来触发:
ary.select &:even?
如果您的元素与索引不同,请成对组合 2 并使用第一个元素:
ary.each_slice(2).map { |slice| slice[0] }
查看Enumerable#select(Array
包括Enumerable
)。你可以这样做:
1.9.3p392 :001 > a = [1,2,3,4,5,6]
=> [1, 2, 3, 4, 5, 6]
1.9.3p392 :002 > a.select {|n| n % 2 == 0}
=> [2, 4, 6]
select
将过滤数组,挑选出块返回 true 的任何内容。在这种情况下,使用 mod ( %
) 运算符查找可被 2 整除的元素。
如果我理解正确,您只想采用偶数索引。尝试使用each_index。
arr = (0..19).to_a
arr.each_index { |x| puts arr[x] if x % 2 == 0 }
这打印:
0
2
4
6
8
10
12
14
16
18
如果你想要数组的偶数元素,你也可以使用find_all
。
arr.find_all { |e| e.even? }
(1..19).to_a.select{|e| e.%(2).zero?}
这比使用== 0
.