我试图找到一种方法来返回包含数字1
的所有子数组的索引。例如,在这个2D数组中:
ary= [[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 0]]
我的目标是返回[1, 2]
。
使用以下内容:
ary.index(ary.detect{|xyz| xyz.include?(1)})
仅返回1
,这是检测到1
的第一个子数组。
如何获取包含1
?
答案 0 :(得分:0)
ary.map.with_index {|sub_ary, i| sub_ary.include?(1) ? i : nil}.compact
=> [1, 2]
答案 1 :(得分:0)
使用select
irb(main):013:0> ary.select {|xyz| xyz.include?(1)}.map {|i| ary.index i}
=> [1, 2]
答案 2 :(得分:0)
ary.each_index.select { |i| ary[i].include?(1) }
#=> [1,2]